enterprise_refresh_index休眠MySQL连接


8

有时,由cron运行的索引器似乎卡在了MySQL上,因为可以看到Sleeping连接。索引器运行了几个小时,实际上根本没有运行。我已经搜索过了,但是找不到任何相关内容。任何人都可以照亮吗?可能是服务器配置还是Magento错误?

Answers:


0

您是否正在使用持久连接?您有几个睡眠连接?您的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}

不幸的是,我们仍然遇到这个问题。我运行show full process命令,它显示了很长的SQL语句,其中列出了实体ID。
user1240207

0

通过在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脚本完成了,它们是否应该关闭?确保您的网络服务器未使用连接池...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.