我遇到了一些奇怪的行为。我有一个Java程序,它使用准备好的语句和批处理插入将数据永久写入MySQL表。如果其他一些进程在同一个表上发出一个LOCK TABLES t WRITE,并在此之后不久(几分钟后)释放它,则Java程序将按预期继续运行。但是,当锁定持续时间较长(超过30分钟)时,Java程序会断开连接,不再继续。2小时后,通信链接故障就会失败。在表锁期间挂起的insert语句是在释放锁之后执行的,但连接随后就消失了。
我有一个TCP客户机,它通过网络与运行在虚拟机上的服务器通信,现在虚拟机的客户操作系统是IBM OS 4690,主机操作系统是Linux。一旦重启发生,当客户端尝试执行Socket.Send时,它不会从服务器获得任何响应。如果服务器运行的是物理硬件,则客户端能够通过TCP Error 10054检测到连接重置。当服务器在虚拟机上运行时,不会显示此消息。