当前位置: 首页 > 知识库问答 >
问题:

通信链路故障发送到服务器的最后一个数据包是4毫秒前的

宗安翔
2023-03-14

首先,我知道这个问题被问了很多次,但对我来说,复制场景与我想的几乎没有什么不同(很可能是这样)。

对于mysql健康检查,我们执行一个简单的select查询(从dual中选择1)。一旦mysql服务器闲置一段时间(大约1分钟),我们尝试运行状况检查,就会出现此问题。。

通信链路故障\n\n发送到服务器的最后一个数据包是4毫秒前的

“消息”:“无法从服务器读取响应。应读取4个字节,在连接意外丢失之前读取0个字节。”,“堆栈”:[“com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2431)”、“com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2882)”、“com.mysql.jdbc.reuseAndReadPacket(MysqlIO.java:2871)”、“com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3414)”、“com.mysql.jdbc.MysqlIO.MysqlIO.sendCommand(MysqlIO.java:1936)”,“com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)”,“com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)”,“com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)”,“com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:734)”,“org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264)”,

如果我们再次尝试,我们会立即成功连接,一切正常。所以它在本质上是非常零星的。

我见过这个stackoverflow后com.mysql.jdbc.exceptions.jdbc4。通信链路故障

所以在所有这些可能性中...我会回答其中几个-

>

本地DNS服务器无法识别JDBC URL中的主机名-否(原因与步骤1相同)

JDBC URL中缺少端口号或端口号错误-否(原因与步骤1相同)

数据库服务器已关闭-否-(服务器已启动并正在运行)

DB服务器不接受TCP/IP连接-否(原因与步骤1相同)

DB服务器已用完连接。-否(我已将连接数增加到1000)

介于Java和DB之间的东西正在阻止连接,例如防火墙或代理。

是的。代理配置如下:

retries                 3
timeout http-request    10s
timeout queue           1m
timeout connect         10s
timeout client          1m
timeout server          1m
timeout http-keep-alive 10s
timeout check           10s
maxconn                 3000

我的etc/我的同事很少。详情如下:--

connect_timeout  = 10
wait_timeout     = 28800
bind-address = 0.0.0.0
max_connections = 1000

为了创建连接,我使用commons dbcp数据源(org.apache.commons.dbcp.BasicDataSource)

BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("url");
dataSource.setUsername("username");
dataSource.setPassword("pwd");
dataSource.getConnection();

请帮我找出可能出错的地方...是代理配置导致问题还是其他什么???帮助将不胜感激。

共有1个答案

晁璞
2023-03-14
  1. JDBC URL中的IP地址或主机名错误-否(在通信失败后第二次尝试时工作)

不,因为您已经达到了执行语句(),这意味着您已经有了一个连接和一个准备语句

对的

对的

没有,原因与(1)、(2)、(3)相同。

对的

没有,原因与(1)、(2)、(3)、(4)、(5)相同。

不,原因与(1), (2), (3), (4), (5), (6)相同。

建立连接后,您的通信出现故障。这就排除了你在这里提到的一切。剩下的是(a)服务器或网络中的瞬态条件,(b)客户端的连接池特性,(c)JDBC驱动程序提交的一些灾难性错误命令,等等。最有可能的是(a)。

 类似资料:
  • 问题内容: 我有以下例外 javax.persistence.PersistenceException:异常[EclipseLink-4002](Eclipse Persistence Services-2.5.2.v20140319-9ad6abd):org.eclipse.persistence.exceptions.DatabaseException内部异常:com.mysql.jdbc.e

  • 我用java从MySQL查询了一些记录。但是在一些查询中,我遇到了一个问题,使查询失败,但在其他情况下,它查询成功。错误消息是下一个: 我尝试过一些方法,比如: 在 但什么都没发生。 我的环境是: MySQL: 5.5.3-m3-log源代码分布 Java: 1.60_16 jdk: HotSpot(TM)64位服务器VM(构建14.2-b01,混合模式) JDBC: mysql连接器-java-

  • 我在Stackoverflow的另一个问题中尝试了这个建议,并在连接方面做了如下更改 但我的项目还是失败了 严重:执行身份验证com时发生异常。mysql。jdbc。例外情况。jdbc4。通信异常:通信链路故障 谁能告诉我克服这个问题的最好方法是什么?

  • 我已经在centos上安装了tomcat,并部署了java web应用程序。我正在使用mysql数据库。每天早上,当我尝试作为第一个用户登录时,它会给我以下错误: 您的登录尝试未成功,请重试。原因:org.hibernate.exception.jdbcConnectionException:从服务器成功接收的最后一个数据包是在66,913,221毫秒之前。最后一个成功发送到服务器的数据包是在66

  • StackOverflow上发布的与通信有关的问题似乎已经够多了。但没有一个能帮我走出困境。 但是,当我试图通过JDBC连接DB服务器时,它仍然失败,出现异常“com.mysql.JDBC.exceptions.jdbc4.CommunicationsException:Communications link Failure”。 测试类如下所示。