web-dev-qa-db-fra.com

Tomcat cesse de répondre à Apache

J'essaie de résoudre un problème de connexion d'Apache et de Tomcat avec mod_proxy_ajp. Dans mon cas, le Tomcat s'arrête pour répondre à Apache, et le journal Apache affiche un message d'erreur de journaux comme celui-ci:

[Mon May 06 15:22:47 2013] [error] ajp_read_header: ajp_ilink_receive failed
[Mon May 06 15:22:47 2013] [error] (120006)APR does not understand this error code: proxy: read response failed from [::1]:18009 (localhost)

Je n'ai aucune idée. Est-ce que quelqu'un peut m'aider?

12
sezina

Essaye ça :

  1. essayez d'augmenter le nombre de threads. (Cela retardera les erreurs)
  2. Dans la configuration Tomcat, essayez "org.Apache.coyote.ajp.AjpProtocol" à la place de l'APR.
3
Vaibhav Jain

Ajoutez connectionTimeout et keepAliveTimeout à votre connecteur AJP trouvé dans /etc/Tomcat7/server.xml.

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 
           connectionTimeout="10000" keepAliveTimeout="10000" />

Informations sur le connecteur AJP sur https://Tomcat.Apache.org/Tomcat-7.0-doc/config/ajp.html

  • connectionTimeout = Le nombre de millisecondes pendant lequel ce connecteur attendra, après avoir accepté une connexion, que la ligne URI de requête soit présentée. La valeur par défaut pour les connecteurs de protocole AJP est -1 (c'est-à-dire infinie).

  • keepAliveTimeout = Le nombre de millisecondes pendant lequel ce connecteur attendra une autre demande AJP avant de fermer la connexion. La valeur par défaut consiste à utiliser la valeur qui a été définie pour l'attribut connectionTimeout.

Si les valeurs connectionTimeout et keepAliveTimeout ne sont pas définies, les connexions AJP seront maintenues actives pendant une durée infinie. Causant de nombreux threads, le nombre maximum de threads par défaut est de 200.

Je recommande d'installer psi-probe - un gestionnaire et un moniteur avancés pour Apache Tomcat, issu de Lambda Probe. https://code.google.com/p/psi-probe/

10
paalfe

J'utilise Tomcat 8 avec Apache 2.2 et Centos, a trouvé le problème en disant:

[error] ajp_read_header: ajp_ilink_receive failed
[error] (70007)The timeout specified has expired: proxy: read response failed

La solution que j'ai appliquée et cela a fonctionné parfaitement:

1. Configure Apache 'MaxClients' to be equal to the Tomcat AJP 'maxConnections' configuration.
2. Configure Tomcat AJP 'keepAliveTimeout' to close connections after a period of inactivity.

Voici un exemple de Tomcat server.xml:

<Connector port="8009" protocol="AJP/1.3" maxConnections="256" keepAliveTimeout="30000" redirectPort="8443" />

votez pour la réponse si vous avez aimé cette solution. à votre santé

3
Aqeel