我在浏览器和自定义 Web 服务器之间有一个 apache 代理。因此,启动网络服务器后,我可以访问我的网络应用程序大约 4-5 小时。之后我收到此错误
Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /.
Reason: Error reading from remote server
要再次访问 Web 应用程序,我必须重新启动 Web 服务器。我尝试检查从我的网络服务器获得的日志,并且该日志中只有错误,我发现是这个
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException MESSAGE: Connection timed out
STACKTRACE:
java.net.SocketException: Connection timed out 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) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1910) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803) at 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) at com.mysql.jdbc.Statement.execute(Statement.java:695) at hra.database.Pool.getConnection(Pool.java:62)
** END NESTED EXCEPTION **
Last packet sent to the server was 925624 ms ago.
我尝试修复此数据库错误,但仍然收到上述代理错误,因此日志信息肯定没有用。
这是我从 Apache 代理日志中得到的内容
(70007)The timeout specified has expired: proxy: error reading status line from remote server
有人知道可能是什么问题或有任何有用的指示来解决此问题吗?
最佳答案
apache 代理失败,因为 customwebserver 没有响应。你的
customwebserver 记录了等待 mysql 应答的崩溃。重新启动
customwebserver 修复了它,所以 mysql 不是问题。看起来问题出在您的自定义网络服务器处理与 mysql 的连接的方式上。
我们可以看看你的 jdbc 配置吗?你有 autoReconnect=true 吗?
关于java - 访问应用程序时出现代理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733683/