2012-01-04 76 views
2

我在浏览器和我的自定义Web服务器之间有一个apache代理。因此,启动网络服务器后,我可以访问我的Web应用程序4-5小时。之后,我收到此错误访问应用程序时出现代理错误

代理错误代理服务器收到来自 上游服务器的无效响应。代理服务器无法处理请求GET /。

原因:错误从远程服务器

读书要再次访问Web应用程序,我必须重新启动Web服务器。我试图检查我从该日志我的Web服务器和唯一的错误得到了日志,我发现这是

com.mysql.jdbc.CommunicationsException:通信链路故障 由于底层异常:

** BEGIN嵌套异常**

java.net.SocketException异常MESSAGE:连接超时

堆栈跟踪:

java.net .SocketException:连接超时 at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:146) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream的.java:113) 在com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160) 在com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188) 在com.mysql .jdbc.MysqlIO.readFully(MysqlIO.java:1910) 在com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304) 在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803) 在com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665) at com.mysql.jdbc.Connection.execSQL(Connection.java:3170) at com.mysql.jdbc.Connection.execSQL(Connection。的java:3099) 在com.mysql.jdbc.Statement.execute(Statement.java:695) 在hra.database.Pool.getConnection(Pool.java:62)

** END嵌套异常**

发送到服务器的最后一个数据包是925624毫秒前。

而我试图解决这个数据库错误,但我仍然得到上面提到的代理错误,所以肯定日志信息是没有用的。

这是我从Apache代理获取日志

(70007)指定的超时时间已过期:代理:错误读取状态 线从远程服务器

有谁知道什么可以成为问题或任何有用的指针来解决这个问题?

+2

“我必须重新启动Web服务器”< - 哪一个?你的位置? – fge 2012-01-04 20:44:13

+0

是的,我的自定义书写网络服务器。 – yogsma 2012-01-12 17:04:25

回答

1
  1. apache代理失败,因为customwebserver没有回答。你的
  2. customwebserver记录崩溃等待mysql来回答。重启
  3. customwebserver修复它,所以mysql不是问题。它看起来像你的customwebserver处理它与mysql的连接的问题。

    我们可以看到你的jdbc配置吗?你有autoReconnect = true吗?

+0

我使用jdbc连接,通过像这样的新池池(“jdbc:mysql://”+ host +“/ mydatabase?jdbcCompliantTruncation = false”,“org.gjt.mm.mysql.Driver”,windows?2:20 )没有autoReconnect = true。我不认为在连接池中使用autoreconnect是个好主意。 – yogsma 2012-01-16 19:52:01

1

可能发生的情况是您的上游服务器由于不活动而自行关闭。在控制该服务器的服务器上找到该设置并将其启动。

+0

你的意思是网络服务器? – yogsma 2012-01-04 20:52:21

+0

无论哪个代理人抱怨回应不佳。 – cdeszaq 2012-01-04 20:54:11

0

我认为像由你遇到你的基础设施的成员之一,提出了超时以前的答案说:

  • 服务器
  • 网络设备(路由器是聪明的野兽,但防火墙可以巧妙太)

您是否设置了真正的连接池?使用心跳机制保持活跃的连接? 这诱使一些网络流量,但避免了这样的问题? 尝试使用网络捕获工具,有许多日志分析

HTH 杰罗姆

1

我可以看到,你看到两个连接超时错误

  • Apache代理Web服务器超时,而连接到自定义的Web服务器
  • 自定义Web服务器超时,同时连接到数据库

如果在代理服务器上设置的超时数量为,比数据库连接超时设置少,则在数据库连接超时之前,代理服务器也会超时。

  • 作为第一件事情解决所有DB连接问题(不通过代理)直接连接到自定义Web服务器测试应用程序。
  • 观察并确定正常响应时间和最大响应时间。
  • 设置代理超时ProxyTimeout是比(最大响应时间)+(网络延迟)

如果可能的话,你可以共享代理服务器配置,以进一步帮助您更多的价值。

相关问题