Question

J'utilise apache sur une machine pour servir des demandes de JBOSS sur une autre machine. Tout fonctionne très bien quand je démarrage jboss et je suis en mesure d'accéder à l'application Web, mais après quelques heures, je fini par commencer à obtenir « Le serveur proxy a reçu une réponse non valide à partir d'un serveur en amont » des erreurs. Si je redémarre jboss alors tout fonctionne bien à nouveau, mais quelques heures plus tard, j'ai le même problème ...

Quelqu'un sait-il ce qui pourrait être la cause de ce problème? Je n'ai pas accès aux journaux apache à ce moment (je devrais en quelques heures), mais il semble être quelque chose avec jboss depuis redémarrant est la solution temporaire.

J'utilise jboss4.2.3 et apache 1.3 avec mod_jk. Je ne trouve aucune erreur dans les journaux et jboss l'application que je suis en train d'atteindre ne fait pas tout ce qui prend beaucoup de temps. La page principale est juste une page de connexion simple. Je ports 8009 et 8080 ouvert pour la communication entre le serveur d'applications et le serveur web. Je ne sais pas quelle configuration est erroné.

Était-ce utile?

La solution

Ce me semble mod_jk dans Apache devient hors de synchronisation avec le connecteur AJP dans JBoss. Le protocole AJP utilise persistants, les connexions remploi entre le serveur Web et le serveur d'application, et si le protocole n'est pas configuré exactement la même sur les deux extrémités de la connexion, éventuellement les connexions rassir à une extrémité de la connexion, mais l'autre extrémité continue d'essayer de les utiliser. Le symptôme est une erreur 502.

Ma première suggestion est la suivante: ne pas utiliser mod_jk à moins que vous devez. Il est complexe et difficile à configurer pour obtenir un système stable. Si vous n'avez pas besoin de ses fonctions d'équilibrage de charge ou la performance, je suggère d'utiliser mod_proxy à la place. Il est tout aussi bon pour la plupart des applications, et assez facile.

Mais si vous voulez en tenir à mod_jk, la première chose que vous devez vous assurer est que vous utilisez la toute dernière version mod_jk (actuellement 1.2.28), car les anciennes versions sont notoirement difficiles à configurer. Heureusement, mod_jk est toujours pris en charge sur Apache 1.3.

Ensuite, vérifiez le fichier journal de mod_jk (configuré à l'aide de la directive JkLogFile). Si vous voyez un tas d'erreurs liées à la connexion dans le temps, les choses vont mal, vous devez modifier votre configuration jk aux deux extrémités de la connexion. Le coupable le plus probable est le délai d'expiration, de sorte que lire sur les et assurez-vous que les deux extrémités chantent de la même chanson.

Autres conseils

Je l'ai aussi vu cela se produire à l'aide apache et tomcat. Dans ma situation particulière, l'application déployée à tomcat avait un bug qui a causé des fils de réponse à accrocher. Finalement, tomcat a manqué de threads de travail, et apache n'a pas pu établir une connexion.

Dans notre cas, les connexions de base de données ne bénéficiaient pas correctement nettoyé de nouveau dans un pool de connexion et d'autres fils attendaient indéfiniment pour obtenir une connexion de la piscine. Cependant, tout ce qui maintient en vie indéfiniment un fil de traitement de réponse pourrait conduire au même problème.

J'ai eu le même problème, mais avec Apache et Glassfish. Enfin, je pouvais le réparer configurer le même délai d'attente dans les deux côtés.

Dans Glassfish changer la configuration de l'écouteur et dans Apache worker.properties avec les Sa modification de cette ligne:

worker.worker_name.socket_timeout=300

Je ne suis pas sûr de la façon de configurer ce dans JBoss, peut être modifier le web.xml ou cluster-service.xml.

Si vous connectez Apache Tomcat et a fini dans ce blog comme moi, il est logique.

Connexion Accepter pour AJP / 1.3 dans tomcat résolu cette erreur pour moi. Ne pas oublier de commenter le service sur le protocole HTTP.

**<!--<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->
<Connector port="8081" protocol="AJP/1.3"
           connectionTimeout="20000"
           redirectPort="8443" />**
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top