如何解决尽管“ wait_timeout”减少,但MariaDB进程列表中的大量休眠查询减少了
我最近将我的PHP应用程序迁移到了具有PHP 7.3和MariaDB的新服务器上(之前是PHP 5.5和MySQL 5.5)。 我遇到“连接过多”错误的问题。 我想我的应用程序必须加以改进才能纠正。 在执行此操作时,我已使用以下值更改了mariaDB服务器conf:
__main__.A of type 'CustomType'
尽管进行了这些增强,但我仍然遇到相同的问题,仍然存在一些睡眠过程,其时间超过60秒... 并且线程数正在增加...直到max_coonections值为止。 当然,我已经重新启动了服务器。
我的PHP应用程序正在使用Mysqli和持久连接。
解决方法
简单,停止使用持久连接并重新启动服务器。
,尽管增加max_connections
可能会有所帮助,但只会使情况变得更糟。听起来您有很多连接彼此绊倒-没有完成。
查看SHOW PROCESSLIST
。主要犯罪者之一是“睡眠”时间(“系统”进程除外)最多的非睡眠时间之一。
如果“进程列表”显示了30个以上的非“睡眠”连接,则降低max_connections
和超时。这些将有助于疏通系统,但不会引起问题的根源。
“原因”通常是一个或几个长时间运行的查询,这些查询会阻止其他连接。让我们尝试使用慢日志来找到有问题的查询:http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog
,最后我发现,问题出在服务器的安装上。 我曾经像往常一样更改my.cnf,有些变量在每次重新启动时都会更改,而其他的则没有。
我意识到还有另一个conf文件,该文件或将我在my.cnf文件中所做的更改写入某些变量... 现在,我更改了正确的文件,并且服务器正在正常工作。
因此,如果mariaDB忽略了您在conf文件中所做的更改,请检查是否还有其他文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。