Qualquer benefício claro em ter várias instâncias do Tomcat atrás de um servidor Apache?

5

Temos 5 servidores físicos que têm um balanceador de carga de hardware na frente deles, cada um com um servidor Apache que usa o mod_jk para se conectar a três instâncias do Tomcat (por servidor), todos com os mesmos aplicativos da web implantados. Eu fiz o argumento para derrubar um dos Tomcats (por servidor) e aumentar a alocação de memória para os dois restantes. Eu estou querendo saber se mesmo dois é necessário ou devemos apenas ter um único par Apache-Tomcat por servidor físico. Eu não consegui entender por que isso foi configurado para começar, mas foi assim que eu me juntei à equipe de desenvolvimento.

Acho que também posso perguntar, há alguma desvantagem clara? O que me vem à mente é que, como eu notei, menos memória estará disponível em geral (até o ponto em que, dependendo de quantas aplicações web você tem, você está morrendo de fome), e também mais conexões agrupadas por trás por cada instância.

    
por Doug 28.07.2012 / 07:00

2 respostas

8

Essa é uma pergunta incrivelmente específica de um aplicativo. Há várias razões pelas quais posso pensar em por que isso poderia ser benéfico de qualquer forma. A maioria dos "múltiplos tomcat" positivos são rebatidos com "bem, não faça isso , então", mas "é assim que sempre fizemos" é um argumento poderoso com pessoas que provavelmente não deveria estar tomando esse tipo de decisão (mas geralmente são).

As razões pelas quais eu deparei com o motivo pelo qual várias instâncias independentes do Tomcat são usadas incluem:

  • SO de 32 bits significa apenas 4 GB de espaço de endereço por processo; máquina tem mais de 4GB de RAM, você precisa de vários processos para tirar proveito de toda a RAM do sistema. Solução real: passe para o século atual e instale um sistema operacional de 64 bits.
  • Você tem um SO de 64 bits, mas seu aplicativo precisa de uma extensão de apenas 32 bits e, portanto, você deve executar uma JVM de 32 bits (que recai no ponto anterior. Solução real: quebrar os dedos de alguém - Medicare Brasil , Estou olhando para VOCÊ .
  • O aplicativo sofre vazamentos de memória ou bloqueio de contenção, o que significa que há uma quantidade limitada de simultaneidade possível antes que tudo caia em um heap. Executar vários processos pode contornar isso. Solução real: se vários processos realmente funcionarem para sua carga de trabalho (ou seja, não há nenhum recurso externo para enfrentar), a falta de simultaneidade interna é apenas um bug. Solução real: quebre mais alguns dedos. de preferência quem pensou que eles eram mais espertos do que os autores de bibliotecas decentes de processamento paralelo.

Por que um único processo é melhor:

  • Balanceadores de carga nunca são tão bons em atribuir trabalho a back-ends como um algoritmo em processo será (ou porque o processo tem acesso a todos os tipos de informações que o balanceador de carga não faz, ou preferencialmente porque o algoritmo de processo apenas retorna para um cenário de fila de trabalho). Portanto, o balanceamento de carga entre várias JVMs é menos eficiente.
  • Sobrecarga por-JVM, em termos de uso de CPU e memória. Muito auto-explicativo, espero.
por 28.07.2012 / 07:40
-1

Como configurar várias instâncias do Tomcat ..... link

    
por 26.11.2013 / 08:36

Tags