我在我的机器上运行一个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,'超过锁定等待超时;试试 重启交易')
InfluxDB:InfluxDBServerError:{“error”:“timeout”}
仔细检查完所有代码后,我找不到此问题的原因。 MySQL和Influx,甚至Ubuntu对每个用户和时间的连接有限制吗?
对于MySQL,使用SELECT FOR UPDATE查询锁定某些行,但在代码中,所有事务都是正确提交或回滚的。如果在提交或回滚之前连接丢失,它将解释MySQL超时,因为它将尝试访问未正确解锁的锁定行。
说到InfluxDB,我们只是处理原子插入超时问题,这对我来说毫无意义。
如果有人知道可能导致这些超时的原因,我将永远感激不尽!