Temos o Apache 2.2.24 na frente do Tomcat 7.0.33. Estamos usando conectores AJP com APR / nativo configurado. Recentemente notei um número de 500 erros nos logs de acesso do Apache para uma pequena proporção (0.3%) de pedidos para um recurso específico. Para cada uma dessas 500 respostas, há um par correspondente de linhas de erro no log de erros do Apache
[Wed Mar 06 04:07:42 2013] [error] ajp_read_header: ajp_ilink_receive failed
[Wed Mar 06 04:07:42 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (*)
O tempo registrado para os erros é entre 5:06 e 5:07 minutos após o horário registrado para a solicitação. Correspondendo à diretiva Timeout 300
que está configurada. Nada é registrado no log de acesso do Tomcat, então presumo que a solicitação nunca chegue lá.
Presumivelmente, há algum problema de desempenho com o recurso (ele faz uma atualização de banco de dados e tem uma carga bastante alta), mas estou mais preocupado aqui em entender o que está acontecendo com a comunicação entre o Apache e o Tomcat:
O Apache é configurado usando uma regra de reconfiguração com o sinalizador [proxy,last]
. O conector do Tomcat parece
<Connector port="8014"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Como eu disse anteriormente, estarei trabalhando para corrigir o gargalo no recurso Tomcat separadamente.