4

我在一台机器上使用 apache 为另一台机器上的 jboss 提供请求。当我启动 jboss 并且我能够访问 Web 应用程序时,一切正常,但几个小时后,我最终开始收到“代理服务器收到来自上游服务器的无效响应”错误。如果我重新启动 jboss,那么一切都会再次正常,但几个小时后我遇到了同样的问题......

有谁知道可能导致此问题的原因?我目前无法访问 apache 日志(我应该在几个小时内),但它似乎与 jboss 有关,因为重新启动它是临时修复。

我将 jboss4.2.3 和 apache 1.3 与 mod_jk 一起使用。我在 jboss 日志中没有发现任何错误,而且我试图访问的应用程序没有做任何需要很长时间的事情。主页面只是一个简单的登录页面。我打开了端口 8009 和 8080 用于应用服务器和 Web 服务器之间的通信。不知道什么配置有问题。

4

4 回答 4

6

在我看来,这听起来像是 Apache 中的 mod_jk 与 JBoss 中的 AJP 连接器不同步。AJP 协议在 Web 服务器和应用程序服务器之间使用持久的、可重复使用的连接,如果连接两端的协议配置不完全相同,最终连接在连接的一端会过时,但在另一端不断尝试使用它们。症状是 502 错误。

我的第一个建议是:除非需要,否则不要使用 mod_jk。要获得稳定的系统,配置起来既复杂又困难。如果您不需要它的性能或负载平衡功能,我建议改用 mod_proxy。它对大多数应用程序同样适用,而且非常简单。

但是,如果您想坚持使用 mod_jk,首先需要确保您使用的是最新的 mod_jk 版本(当前为 1.2.28),因为众所周知,旧版本很难配置。幸运的是,Apache 1.3 仍然支持 mod_jk。

接下来,检查 mod_jk 日志文件(使用 JkLogFile 指令配置)。如果您在出现问题时看到一堆与连接相关的错误,您需要在连接的两端调整您的 jk 配置。最可能的罪魁祸首是超时设置,因此请阅读此处的相关信息,并确保两端都在同一张赞美诗中演唱。

于 2009-07-12T15:05:16.203 回答
2

我也看到使用 apache 和 tomcat 发生这种情况。在我的特殊情况下,部署到 tomcat 的应用程序有一个导致响应线程挂起的错误。最终tomcat用完了工作线程,apache无法建立连接。

In our case, database connections weren't getting released properly back into a connection pool, and other threads were waiting indefinitely to obtain a connection from the pool. However, anything that indefinitely keeps alive a response handling thread could lead to the same problem.

于 2009-07-12T15:34:08.580 回答
0

I had the same issue but with Apache and Glassfish. Finally, I could fix it configuring the same timeout in both sides.

In Glassfish changing the listener configuration and in Apache modifiying the worker.properties with this line:

worker.worker_name.socket_timeout=300

I am not sure about the way to configure this in JBoss, may be modifying the web.xml or cluster-service.xml.

于 2013-11-11T13:52:06.593 回答
0

If you are connecting Apache with Tomcat and ended up in this blog just like me, it makes sense.

Accepting connection for AJP/1.3 in tomcat solved this error for me. Do not forget to comment out the service on HTTP protocol.

**<!--<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->
<Connector port="8081" protocol="AJP/1.3"
           connectionTimeout="20000"
           redirectPort="8443" />**
于 2018-04-05T06:18:07.690 回答