在我的应用程序中,我遇到了一个问题,在一个相当长的运行事务中,我收到了“MySQL服务器已离开”错误。我知道这已经被问了很多,但我试着通过我的测试来找出所有可能的原因。
有一件事让我很困惑,那就是MariaDB服务器日志中的错误消息:
[警告]中断了6到db的连接:“默认”用户:“根”主机:“10.0.0.18”(读取通信数据包时超时)
这可以解释为什么客户端报告连接断开,
但是
此错误发生在客户端报告“MySQL服务器已离开”错误之前10-15分钟。与此同时,客户机正在愉快地运行insert语句,没有任何问题。但一旦客户机运行select语句,该语句几乎立即失败。
我已经检查了这些可能的原因:
-
服务器一直在运行
-
等等,暂停
设置为8小时,这比事务需要失败的时间长得多
-
最大允许包数
设置为512M,这应该足够了,因为查询是一个非常短的select语句
-
服务器没有耗尽内存
我很确定这个问题一定与MariaDB日志中的“读取通信包超时”错误有关。但我无法理解为什么客户机仍然可以写数据。既然
等等,暂停
超高。
一些系统信息:
-
我正在运行MariaDB 10.5.1
-
客户端使用python 3.6,数据库连接使用MySQL的mysqlclient
我希望你们中的一些人知道我应该寻找什么,因为这真的让我发疯。