502 Pasarela incorrecta ... respuesta no válida del servidor en sentido ascendente (Apache y JBoss)

StackOverflow https://stackoverflow.com/questions/1109241

  •  12-09-2019
  •  | 
  •  

Pregunta

Estoy usando Apache en una máquina para servir peticiones a JBoss en otra máquina. Todo funciona bien cuando el arranque JBoss y yo soy capaz de acceder a la aplicación web, pero después de unas horas que finalmente comienza a recibir "El servidor proxy recibió una respuesta no válida de un servidor upstream" errores. Si recomienzo JBoss entonces todo funciona bien otra vez, pero varias horas más tarde tengo el mismo problema ...

¿Alguien sabe qué podría estar causando este problema? No tengo acceso a los registros de Apache en este momento (yo debería en unas horas), pero parece ser algo con JBoss desde reiniciando es la solución temporal.

Estoy usando jboss4.2.3 y Apache 1.3 con mod_jk. No encuentro ningún error en los registros de JBoss y la aplicación que estoy tratando de llegar no está haciendo todo lo que lleva mucho tiempo. La página principal es sólo una simple página de inicio de sesión. Tengo los puertos 8009 y 8080 abierto para la comunicación entre el servidor de aplicaciones y el servidor web. No sé qué configuración es incorrecta.

¿Fue útil?

Solución

Esto me suena como mod_jk en Apache está fuera de sincronía con el conector AJP en JBoss. El protocolo AJP utiliza reutilizadas conexiones persistentes, entre el servidor web y el servidor de aplicaciones, y si el protocolo no está configurado exactamente igual en ambos extremos de la conexión, con el tiempo las conexiones echarse a perder en un extremo de la conexión, pero el otro extremo sigue tratando de usarlos. El síntoma es un error 502.

Mi primera sugerencia es la siguiente: no utilice mod_jk a menos que necesite. Es complejo y difícil de configurar para obtener un sistema estable. Si usted no necesita sus características de rendimiento de equilibrio o de carga, se sugiere emplear mod_proxy lugar. Es tan bueno para la mayoría de las aplicaciones, y bastante fácil.

Sin embargo, si usted quiere meter a mod_jk, La primera cosa que necesita es asegurarse de que está utilizando la última versión mod_jk (actualmente 1.2.28), ya que las versiones más antiguas son notoriamente difíciles de configurar. Por suerte, mod_jk todavía se soporta en Apache 1.3.

A continuación, compruebe el archivo de registro mod_jk (configurados mediante la directiva JkLogFile). Si usted está viendo un montón de errores relacionados con la conexión de todo el tiempo las cosas van mal, es necesario ajustar su configuración jk en ambos extremos de la conexión. La causa más probable es la configuración de tiempo de espera, por lo leer acerca de los que están aquí y asegúrese de que ambos extremos están cantando de la misma partitura.

Otros consejos

También he visto que esto ocurra usando Apache y Tomcat. En mi situación particular, la aplicación implementada a Tomcat tenía un error que hacía que las discusiones de respuesta para colgar. Eventualmente Tomcat quedó sin hilos de trabajo, y Apache no fue capaz de establecer una conexión.

En nuestro caso, las conexiones de base de datos, no estaban recibiendo liberados adecuadamente de nuevo en un pool de conexiones, y otros hilos estaban esperando indefinidamente para obtener una conexión de la agrupación. Sin embargo, cualquier cosa que mantenga viva indefinidamente un hilo tramitación de respuestas podría conducir a un mismo problema.

Yo tenía el mismo problema, pero con Apache y Glassfish. Finalmente, pude solucionarlo configurar el mismo tiempo de espera en ambos lados.

En Glassfish cambiar la configuración oyente y en Apache modifiying los worker.properties con esta línea:

worker.worker_name.socket_timeout=300

No estoy seguro acerca de la manera de configurar esto en JBoss, puede modificar el web.xml o cluster-service.xml.

Si va a conectar Apache Tomcat y terminó en este blog como yo, tiene sentido.

La aceptación de conexión para AJP / 1.3 en Tomcat resolvieron este error para mí. No se olvide de comentar a cabo el servicio de protocolo HTTP.

**<!--<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->
<Connector port="8081" protocol="AJP/1.3"
           connectionTimeout="20000"
           redirectPort="8443" />**
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top