MySQL PDO 连接数过多

MySQL PDO 连接数过多

我有一个应用程序不断向统计表插入数据。打开的连接数通常平均约为 20 到 22 个。

还有一个由 cron 运行的 PHP 处理脚本,每 30 分钟运行一次。UTC 时间凌晨 2 点左右,处理时间约为 10 分钟,这是一天中最长的处理时间。

大约在这个时候,我收到了大约 8000 个PDOException: SQLSTATE[08004] [1040] Too many connections错误。

设置max_connections为 500。

我观察到,这样做SHOW PROCESSLIST;通常不会在信息列中看到任何查询。在 cron 运行时,我确实会在列中看到 cron 的查询Info,然后 SQL 插入会快速堆积在其下方。

我不太了解如何配置 MySQL,但似乎在 Cron 脚本运行时,统计表中的插入内容正在排队并超出最大连接限制。

什么原因导致此问题?我应该更改哪些配置设置?

答案1

您能检查以下参数吗?尝试增加 max_user_connections 值,如果应用程序长时间保持连接,则减少 wait_timeout。

max_user_connections=[value]
wait_timeout = [value]

相关内容