Answers:
您是否正在使用持久连接?您有几个睡眠连接?您的DB Server配置为允许的最大连接数量是多少?
要检查您刚刚运行了多少个睡眠连接:
show full processlist;
要查看max_connections运行:
show variables like 'max_connections';
我认为睡眠连接不是问题,mysqld将基于2个值使睡眠连接超时:
Interactive_timeout wait_timetout
默认情况下均为28800秒(8小时)。
您可以在my.cnf中设置这些选项(此文件的位置在不同的OS和DB,percona,mysql等中是不同的)
另请参见数据库管理员提供的以下答案:https : //dba.stackexchange.com/a/1559,如果您想了解更多有关如何调试休眠连接的来源的信息,请参见以下出色文章:https:// www。 percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/
“如果您的连接是持久的(通过mysql_pconnect打开),则可以将这些数字降低到合理的水平,例如600(10分钟)甚至60(1分钟)。或者,如果您的应用正常运行,则可以保留默认值。这是由你决定。”
尝试从控制台运行索引器,以查看是否输出一些错误:
php shell/indexer info # this will output the list of indexes then
php shell/indexer --reindex {index_name}
通过在wait_timeout
和上设置一个较短的超时来配置mysql服务器interactive_timeout
mysql>显示类似的变量"%timeout%"
;
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+
9 rows in set (0.00 sec)
设置为:
set global wait_timeout=3;
set global interactive_timeout=3;
(并且还在服务器重启时在配置文件中设置)
但是,您正在处理症状而不是根本原因-为什么打开连接?如果PHP脚本完成了,它们是否应该关闭?确保您的网络服务器未使用连接池...