Devo usar o nginx exclusivamente ou tê-lo como um proxy para o Tomcat (relacionado ao desempenho)?

1

Eu planejei criar um site que seja bem pesado em conteúdo dinâmico e que queira saber qual seria a escolha mais sábia para parte da minha webstack.

Neste momento, estou tentando decidir se devo desenvolver o nginx, usar o PHP para fornecer o conteúdo dinâmico ou usar o nginx como proxy para o Tomcat e usar servlets para fornecer o conteúdo dinâmico.

Eu tenho uma boa experiência com Java, JSP e servlets, o que é uma vantagem logo de cara. Além disso, uma vez que é uma linguagem compilada, ela será executada mais rapidamente que o PHP (está implícito aqui que o Java é cerca de 37x mais rápido que o PHP), e irá criar as páginas da web mais rapidamente.

Eu não tenho experiência com PHP, mas tenho a impressão de que é fácil de aprender. É mais lento que o Java, mas como o cliente só estará se comunicando com o nginx, estou pensando que servir as páginas web criadas dinamicamente para o cliente será mais rápido assim.

Considerando essas coisas, eu gostaria de saber:

  1. As minhas suposições estão corretas?
  2. Onde ocorre o gargalo: criando páginas ou servindo-as de volta para o cliente?
  3. o proxy do Tomcat com nginx dará me qualquer benefício de desempenho nginx se eu vou estar usando o Tomcat para gerar o conteúdo dinâmico (tendo em mente que o meu site vai ser pesado neste aspecto)?

Eu não me importo de aprender PHP se, no final, ele me der o melhor desempenho. Eu só quero saber qual seria a melhor escolha desse ponto de vista.

    
por Kevin 06.03.2011 / 03:55

2 respostas

2

Are my assumptions correct?

Não é bem assim, configurar o nginx infront of Tomcat seria praticamente o mesmo que configurar o nginx com o PHP rodando com CGI usando o nginx "default" php-fpm.

Você usaria os excelentes recursos de conteúdo estático do nginx ao mesmo tempo em que encaminha e retorna o conteúdo dinâmico do seu Tomcat.

Where does the bottleneck occur: creating pages or serving them back to the client?

Comparado a apenas rodar o Tomcat: provavelmente em lugar algum, você estará aliviando o Tomcat para fazer a parte Java enquanto o nginx lida com todo o resto. Dê ou pegue o tempo extra necessário para o nginx solicitar e veicular a página do Tomcat.

Will proxying Tomcat with nginx give me any of nginx performance benefits if I'm going to be using Tomcat to generate the dynamic content?

Sim.

Also, since it is a compiled language, it will execute faster than PHP (it is implied here that Java is around 37x faster than PHP)

Não acredite em tudo que você lê na internet;)

Embora uma linguagem interpretada provavelmente sempre falte no desempenho do código compilado, um cache Opcode geralmente é resgatado e coloca o código em um estado semi-compilado que tende a acelerar imensamente as coisas.

Não na extensão do código compilado, mas perto o suficiente.

    
por 06.03.2011 / 08:46
5

Quando se trata de escolher entre Java e PHP, você precisa se lembrar do seguinte:

  • Ambos são excelentes idiomas
  • Muitos e muitos aplicativos da Web excelentes e de alto desempenho foram criados usando esses idiomas
  • Ambos têm excelentes comunidades de desenvolvedores

Perguntar qual deles terá melhor desempenho é impossível de responder, a menos que você crie o mesmo aplicativo com os dois idiomas e, em seguida, implante e teste os dois. Isto é claro, muito caro e demorado para 99,9999% das equipes.

Quando você se depara com esse tipo de escolha, aqui estão algumas perguntas que você pode fazer em vez de "qual idioma tem melhor desempenho":

  • Qual linguagem e estrutura tornam minha equipe de desenvolvimento mais produtiva?
  • Qual tipo de aplicativo é mais fácil para a equipe de implantação monitorar, implantar e manter?

Se a resposta for PHP, então, na minha opinião, é tolice tentar escrever o aplicativo em outro idioma para obter um ganho de desempenho antecipado. No entanto, se a sua equipe (mesmo que seja apenas você) estiver muito mais confortável com o Java, então é uma boa ideia dedicar seu tempo para fazer o que você sabe da melhor maneira possível.

HTH!

    
por 07.03.2011 / 16:10