间歇性 JDBC 管道破裂和 Link 故障
Intermittent JDBC Broken Pipe and Link Failure
Excepcion:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
...
Caused by: java.net.SocketException: Broken pipe
我已经阅读了很多与此类似的问题。
所以,在提出这个问题之前 'unworthy' 让我澄清一些事情
我的 JDBC link 完全正常工作。
- 认证没有问题
- Sql 已启动并且 运行
- 从未达到
max_connections
,即 300
- 并发线程连接总是在5到9之间
- 我正在使用 MySQL 5.0.95(是的...我知道,我无法控制服务器资源)
- 和Mysql-连接器-java5.1.5
- 已根据 Percona Toolkit 配置 mysql 性能变量
我的具体问题是:
- 这个错误是网络引起的吗?因为它看起来完全是随机的。
- 这是 mysql 版本的 propper mysql 连接器还是这可能是所有错误的根源?
谢谢
A Broken pipe
消息意味着另一端关闭了连接,可能是因为收到的数据包顺序错误,或者因为客户端和服务器之间的状态不同步或类似的原因。或许在您的应用程序和服务器之间有防火墙会终止持久连接?或者也许有一段时间管道(连接)没有任何进展,服务器关闭了它?无论如何,如果您使用连接池机制(you should!),应该可以将此类情况的处理委托给它。
或者,如果您打算始终使用 MySQL,您可以尝试将 failOverReadOnly=false&maxReconnects=10&autoReconnect=true
添加到您的连接字符串中。这是特定于 MySQL JDBC 驱动程序的,因此,我真的建议您配置连接池机制以在将连接交付给您的应用程序之前测试连接。
Excepcion:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
...
Caused by: java.net.SocketException: Broken pipe
我已经阅读了很多与此类似的问题。 所以,在提出这个问题之前 'unworthy' 让我澄清一些事情
我的 JDBC link 完全正常工作。
- 认证没有问题
- Sql 已启动并且 运行
- 从未达到
max_connections
,即 300 - 并发线程连接总是在5到9之间
- 我正在使用 MySQL 5.0.95(是的...我知道,我无法控制服务器资源)
- 和Mysql-连接器-java5.1.5
- 已根据 Percona Toolkit 配置 mysql 性能变量
我的具体问题是:
- 这个错误是网络引起的吗?因为它看起来完全是随机的。
- 这是 mysql 版本的 propper mysql 连接器还是这可能是所有错误的根源?
谢谢
A Broken pipe
消息意味着另一端关闭了连接,可能是因为收到的数据包顺序错误,或者因为客户端和服务器之间的状态不同步或类似的原因。或许在您的应用程序和服务器之间有防火墙会终止持久连接?或者也许有一段时间管道(连接)没有任何进展,服务器关闭了它?无论如何,如果您使用连接池机制(you should!),应该可以将此类情况的处理委托给它。
或者,如果您打算始终使用 MySQL,您可以尝试将 failOverReadOnly=false&maxReconnects=10&autoReconnect=true
添加到您的连接字符串中。这是特定于 MySQL JDBC 驱动程序的,因此,我真的建议您配置连接池机制以在将连接交付给您的应用程序之前测试连接。