猿问

尽管“wait_timeout”减少,MariaDB 进程列表中的大量休眠查询仍减少

我最近将我的 PHP 应用程序迁移到了使用 PHP 7.3 和 MariaDB 的新服务器(之前是 PHP 5.5 和 MySQL 5.5)。我遇到一些“连接过多”错误的问题。我想我的应用程序必须改进才能纠正这个问题。为此,我使用以下值更改了 mariaDB 服务器配置:


max_connections         = 600

connect_timeout         = 5

wait_timeout            = 60

interactive_timeout     = 60

尽管有这些增强功能,我仍然遇到同样的问题,一些休眠进程仍然存在,时间超过 60 秒...并且线程数正在增加...直到 max_coonections 值。当然,我已经重新启动了服务器。


我的 PHP 应用程序使用 Mysqli 和持久连接。


慕容3067478
浏览 131回答 3
3回答

繁星点点滴滴

很简单,停止使用持久连接并重新启动服务器。

大话西游666

最后我发现问题出在服务器的安装上。我曾经像往常一样更改 my.cnf,并且有些变量在每次重新启动时都会更改,而其他变量则不会更改。我意识到还有另一个conf文件,并且该文件或verwrite了我在my.cnf文件中对某些变量所做的更改...现在我更改了好的文件,并且服务器正在正常工作。因此,如果 mariaDB 忽略您在 conf 文件中的更改,请检查是否还有其他文件。

吃鸡游戏

虽然增加可能会带来好处max_connections,但只会让事情变得更糟。听起来你们之间有很多联系,互相绊倒——没有一个能完成。看看SHOW PROCESSLIST。具有最大“时间”(“系统”进程除外)的非睡眠进程之一可能是主要的罪犯。如果进程列表显示超过 30 个非“睡眠”连接,则降低max_connections超时时间。这些将有助于疏通系统,但无法解决问题的根源。“原因”通常是一个或几个长时间运行的查询阻塞了其他连接。
随时随地看视频慕课网APP
我要回答