Configurações de alto volume para Apache / Tomcat / Mod.JK

1

Eu tenho um servidor com CPU de 3,5 GB 2 sendo executado no tomcat / apache com mod.jk. Estamos vendo nosso próprio servidor com muita memória disponível e o tomcat não está mostrando nada de errado em termos de GC.

Temos tentado configurações diferentes para maxThreads de maxClients e o socket_timeout em workers.properties.

estamos calculando a média em torno de 4.000 usuários simultâneos, é um pouco difícil estimar o número de solicitações por segundo, mas provavelmente 400 (eu diria) (apenas um palpite).

Os maxThreads no tomcat sempre devem ser maiores que maxClients no httpd? e se assim por quanto.

Nós tentamos maxClients em 250 e maxThreads em 300 e estávamos vendo a lentidão da web, mas o servidor parecia bem.

Além disso, nosso tamanho médio de httpd é de 10mg.

Qualquer ajuda seria ótima!

Obrigado

    
por user211913 07.03.2014 / 02:58

1 resposta

1

Você não diz qual MPM está usando ou qual versão do Tomcat, então não posso ser tão preciso quanto gostaria.

O AJP usa conexões persistentes por padrão. Portanto, por padrão, o Tomcat precisa de pelo menos tantos threads em seu pool de threads quanto o httpd tem maxClients. Isso tende a ser muito ineficiente, pois a maioria dessas conexões fica ociosa.

Existem algumas maneiras de melhorar as coisas:

  1. Mude para o conector NIO AJP, se disponível (Tomcat 7 em diante). Você precisará configurar o conector AJP do Tomcat com maxThreads > solicitações simultâneas esperadas.

  2. Desative a reutilização da conexão no lado do httpd. Com mod_jk isso significa usar

    JkOptions + DisableReuse

Ignore os avisos nos documentos sobre uma penalidade de desempenho - eles não estão corretos. Você ainda precisará configurar o conector AJP do Tomcat com maxThreads > solicitações simultâneas esperadas.

Para mais detalhes, consulte minha apresentação de proxy reverso e anotações de Rainer sobre ele.

    
por 13.03.2014 / 09:41