我登录到服务器以检查数据库的状态,并在SHOW PROCESSLIST;上注意到有大量睡眠中的连接非常老。


连接时间应持续多长时间

如何在MySQL 5.0.51a-3ubuntu5.4中设置时间限制?

注意:

我正在使用PHP 5.2.x和symfony框架1.2。

评论

详细的博客:sforsuresh.in/如何删除mysql中的sleeping-processes-

#1 楼

mysqld将基于两个服务器选项使数据库连接超时:


interactive_timeout
wait_timeout

默认情况下两者均为28,800秒(8小时)。

您可以在/etc/my.cnf中设置这些选项

如果连接是持久的(通过mysql_pconnect打开),则可以将这些数字降低到600(10分钟)甚至60(1)分钟)。或者,如果您的应用正常运行,则可以保留默认值。这取决于您。

必须在my.cnf中进行以下设置(重新启动mysqld后生效):

[mysqld]
interactive_timeout=180
wait_timeout=180


如果不想重新启动mysql,然后运行以下两个命令:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;


这不会关闭已经打开的连接。这将导致新的连接在180秒内关闭。

评论


所以在/etc/my.cnf文件中,我只是将wait_timeout = 180放进去?

–帕特里克(Patrick)
2011年3月3日在22:28

@Patrick是的,但是您需要将Interactive_timeout和wait_timeout都设置为180。我更新了您的回答。

– RolandoMySQLDBA
2011年3月3日在22:29



该文件可以在dev.mysql.com/doc/refman/5.1/en/option-files.html的其他位置,并且这些选项可能未显示(自己编写)

–尼古拉斯
15年6月15日在15:33