A coleta de lixo seria meu palpite - pode causar gargalos nos servidores Java carregados. Você estudou seus registros de coleta de lixo para ter uma ideia dos atrasos envolvidos? Quais são as configurações da coleta de lixo?
temos um sistema de carga muito alto com cerca de 8,5 milhões de usuários por dia. Na verdade, temos 8 Apache2 Loadbalancer (Ubuntu 10.04.3 LTS x64 via DNS-RoundRobin) que estão enviando o tráfego via AJP1.3 a 20 Workers. Nesses trabalhadores, nosso aplicativo Grails-Web, escrito por você mesmo, está sendo executado em um servidor javacat + java7 (Ubuntu 11.10 x64). O Aplicativo está Registrando em um banco de dados 9.1 postgresql local. Todos os servidores são hostet na Hetzner Germany e têm um Intel® Core ™ i7-2600 com 16GB de RAM e um HDD Raid 1 de 2x3TB.
No horário nobre (das 18h às 12h), às vezes temos sérios gargalos de desempenho, mas o hardware não é o problema. A CPU está no máximo em 50%, carga máx. 2.5 e RAM usado apenas 3-4GB max. Mas eu não tenho ideia, onde está o problema.
Aqui está um trecho do meu server.xml:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
protocol="AJP/1.3"
maxThreads="5000"
minSpareThreads="25"
maxSpareThreads="75"
acceptCount="200"
redirectPort="8443"
connectionTimeout="60000"
debug="4"
/>
No pico, os Tomcats lidam com 400-450 acessos por segundo. Alguém tem algumas dicas de como otimizar o desempenho do Apache + mod_jk + tomcat7?
A coleta de lixo seria meu palpite - pode causar gargalos nos servidores Java carregados. Você estudou seus registros de coleta de lixo para ter uma ideia dos atrasos envolvidos? Quais são as configurações da coleta de lixo?