尽管 "wait_timeout" 减少,但 MariaDB 进程列表中的大量休眠查询减少了
Large numbers of sleeping queries in MariaDB Process List despite of "wait_timeout" decreased
我最近将我的 PHP 应用程序迁移到带有 PHP 7.3 和 MariaDB 的新服务器(之前是 PHP 5.5 和 MySQL 5.5)。
我遇到了“太多连接”错误的问题。
我想我的应用程序必须改进才能纠正这个问题。
在执行此操作时,我已使用以下值更改了我的 mariaDB 服务器 conf:
max_connections = 600
connect_timeout = 5
wait_timeout = 60
interactive_timeout = 60
尽管有这些改进,我仍然有同样的问题,一些休眠进程仍然存在,时间超过 60 秒...
并且线程数正在增加......直到 max_coonections 值。
当然,我已经重启了服务器。
我的 PHP 应用程序正在使用 Mysqli 和持久连接。
简单,停止使用持久连接并重启服务器。
虽然增加 max_connections
可能看起来有好处,但只会让事情变得更糟。听起来你有很多连接互相绊倒 -- none 完成。
看看SHOW PROCESSLIST
。 non-Sleeping 具有最大“时间”(除了 'system' 进程)的其中一个 可能 是主要罪犯。
如果进程列表显示超过 30 个非“睡眠”连接,则降低 max_connections
和超时。这些将有助于疏通系统,但不会触及问题的根源。
“原因”通常是一个或几个 long-running 查询阻塞了其他连接。让我们尝试使用慢日志查找有问题的查询:http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog
终于知道了,问题出在服务器的安装上。
我曾经像往常一样更改 my.cnf ,每次重新启动时都会更改一些变量,而其他变量则不会。
而且我意识到还有另一个 conf 文件,这个文件或覆盖了我在 my.cnf 文件中对某些变量所做的更改...
现在我更改了好文件,服务器正常工作。
因此,如果 mariaDB 忽略您在 conf 文件中的更改,请检查是否有其他文件。
我最近将我的 PHP 应用程序迁移到带有 PHP 7.3 和 MariaDB 的新服务器(之前是 PHP 5.5 和 MySQL 5.5)。 我遇到了“太多连接”错误的问题。 我想我的应用程序必须改进才能纠正这个问题。 在执行此操作时,我已使用以下值更改了我的 mariaDB 服务器 conf:
max_connections = 600
connect_timeout = 5
wait_timeout = 60
interactive_timeout = 60
尽管有这些改进,我仍然有同样的问题,一些休眠进程仍然存在,时间超过 60 秒... 并且线程数正在增加......直到 max_coonections 值。 当然,我已经重启了服务器。
我的 PHP 应用程序正在使用 Mysqli 和持久连接。
简单,停止使用持久连接并重启服务器。
虽然增加 max_connections
可能看起来有好处,但只会让事情变得更糟。听起来你有很多连接互相绊倒 -- none 完成。
看看SHOW PROCESSLIST
。 non-Sleeping 具有最大“时间”(除了 'system' 进程)的其中一个 可能 是主要罪犯。
如果进程列表显示超过 30 个非“睡眠”连接,则降低 max_connections
和超时。这些将有助于疏通系统,但不会触及问题的根源。
“原因”通常是一个或几个 long-running 查询阻塞了其他连接。让我们尝试使用慢日志查找有问题的查询:http://mysql.rjweb.org/doc.php/mysql_analysis#slow_queries_and_slowlog
终于知道了,问题出在服务器的安装上。 我曾经像往常一样更改 my.cnf ,每次重新启动时都会更改一些变量,而其他变量则不会。
而且我意识到还有另一个 conf 文件,这个文件或覆盖了我在 my.cnf 文件中对某些变量所做的更改... 现在我更改了好文件,服务器正常工作。
因此,如果 mariaDB 忽略您在 conf 文件中的更改,请检查是否有其他文件。