Wordpress保持刷新WP_Option缓存破坏网站

时间:2018-05-04 19:37:36

标签: php mysql wordpress woocommerce

该网站正在运行wordpress和woocommerce。最近我遇到了一个问题,即mysql总是卡住并且有100多个连接。进一步看,我可以看到它,因为wordpress正在发送

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'

使mysql运行至少20秒并锁定表。同时,对wp_options中的特定值进行了大量选择查询,因此所有这些查询都是打开并等待的。

我认为这是因为wordpress调用get_options()的方式是从缓存中找到,然后如果缓存无法找到它,它将从数据库中读取所有内容。

但我不明白为什么wordpress会每分钟调用一次?

现在,wordpress会每隔一分钟或更短时间调用下面的查询,这只是在杀死我的网站。

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
SELECT option_value FROM wp_options WHERE option_name = 'uninstall_plugins' LIMIT 1
SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_w3tc.verify_plugins' LIMIT 1
SELECT option_value FROM wp_options WHERE option_name = '_transient_w3tc.verify_plugins' LIMIT 1

它实际上调用了近20个我没有列出所有查询的查询。

我猜每次调用get_option()都会引导一组调用来查找wp_option表中的所有内容。我可以看到有30个

的查询
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
在我输入这个问题时打电话。

我可以从慢查询日志中看到:

Query_time: 201.573018 Lock_time: 27.904311 Rows_sent: 9456 Rows_examined: 9456
SET timestamp=1525462712;
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

有没有人知道造成这个问题的原因是什么?我尝试将索引添加到自动加载,但它仍然可以通过30次重复呼叫来终止我的网站。

我检查过的事情: 我启用了防火墙,所以它不应该是DDos攻击,但我真的在想是否存在wordpress / woocommerce错误可以通过简单的发布/获取请求导致此问题。 检查cron作业运行背景没有错。

提前谢谢大家。这个问题让我很伤心,因为我真的不知道我应该从哪里开始研究这个问题。

0 个答案:

没有答案