Сайт работает на 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 не ошибся.
Спасибо всем заранее. Эта проблема убивает меня, так как я действительно не знаю, где мне начать смотреть на эту проблему.