我在我的机器上运行一个 web.py 服务器,它不断接收 POST 数据并将一些数据存储在 MySQL(5.7.19) 和 InfluxDB(1.3.1) 中,两者都托管在运行 Ubuntu 的远程服务器上( 16.04.1)。
我还有一个 Python 脚本在本地运行,提取 InfluxDB 数据并操作 MySQL 数据。每次运行它的主要功能时,这个 python 脚本都会创建到两个数据库的新连接(每次之后也会关闭它们),每秒最多可以连接 10 次。我正在使用 MySQLdb 和 InfluxDB Python API。
问题是,一段时间后,我偶尔会遇到两个数据库的连接超时。
以下是错误消息的样子:
MySQL:OperationalError:(1205,“超过锁定等待超时;尝试重新启动事务”)
涌入数据库:涌入数据库服务器错误:{“错误”:“超时”}
在仔细检查了我的所有代码后,我找不到这个问题的原因。MySQL 和 Influx,甚至 Ubuntu 是否对每个用户和时间的连接有限制?
对于 MySQL,一些行使用 SELECT FOR UPDATE 查询被锁定,但在代码中,所有事务要么正确提交要么回滚。如果在提交或回滚之前连接丢失,它将解释 MySQL 超时,因为它会尝试访问未正确解锁的锁定行。
对于 InfluxDB,我们只是在处理原子插入超时,这对我来说毫无意义。
如果有人知道可能导致这些超时的原因,我将永远感激不尽!