Wordpress держать обновления WP_Option Cache ломает сайт - PullRequest
0 голосов
/ 04 мая 2018

Сайт работает на 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, это может быть вызвано простым запросом post / get. Проверил, что фон запуска заданий cron не ошибся.

Спасибо всем заранее. Эта проблема убивает меня, так как я действительно не знаю, где мне начать смотреть на эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...