我的mysql服务器在一台远程计算机上。我测试了一段代码在数据库连接被切断时的行为,因为这段代码通过DriverManager观察数据库连接。当我从windows的服务中停止mysql时,代码在调整到脱机状态时没有任何问题。但是当我从遥控器上拔下网线时,数据库查询至少需要一分钟才能注意到任何东西,并且程序会等待相当长的一段时间进行查询,特别是如果在显示从属状态查询之前拔出了网线。为什么会这样呢?
发布于 2020-12-22 20:11:12
您看到网络超时。这是TCP / IP的一个长期特性。
您的Java程序使用TCP / IP连接连接到MySQL。它们的设计目的是对世界上的网络中断具有弹性。假设一个路由器在冰岛的某个地方,并且由Cable and Wireless操作,假设它离线了,你的TCP连接的数据包会尝试寻找不同的路由。
当您突然断开链路层连接(以太网)电缆时,Java程序判断其断开的唯一方法是当TCP连接放弃并超时时。
如果你需要比操作系统更快地检测到这种情况,你需要设置某种看门狗线程。
你通过断开电缆来测试你的东西是很好的。但是,这在服务器软件中并不是一种非常常见的故障模式。(这在移动设备和服务器之间的连接中很常见。)
https://stackoverflow.com/questions/65407041
复制相似问题