Ошибка базы данных WordPress: найдена взаимная блокировка при попытке получить блокировку.

Вопрос или проблема

Я пытаюсь решить проблему взаимной блокировки на своем сайте, но неудачно. Я использую WordFence, и когда я отключаю его, ошибка исчезает. Я отключил плагин, удалив его полностью и переустановив снова, но ошибка также появляется всякий раз, когда я его переустанавливаю.

Обратите внимание, что я полностью удалил плагин, как рекомендовал WordFence.

Кто-нибудь знает, что вызывает это?

Вот журналы на моем сервере:

2018/09/14 01:13:38 [error] 21753#21753: *2868716 FastCGI отправил в stderr: "PHP сообщение: Ошибка базы данных WordPress Взаимная блокировка обнаружена при попытке получить блокировку; попробуйте перезапустить транзакцию для запроса INSERT IGNORE INTO `pn_wfconfig` (`name`, `val`, `autoload`) VALUES ('wfSyncGeoIP.lock', '1536912818', 'no') выполнено require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, wordfence::veryFirstAction, wfConfig::createLock, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection_QueryCaching->query, W3TC\_CallUnderlying->query, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection->query, W3TC\DbCache_Wpdb->default_query" во время чтения заголовка ответа от upstream, клиент: 34.232.72.139, сервер: mysite.com, запрос: "GET /2017/09/19/sample-article/feed/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9011", хост: "mysite.com"
2018/09/14 01:13:57 [error] 21753#21753: *2869493 FastCGI отправил в stderr: "PHP сообщение: Ошибка базы данных WordPress Взаимная блокировка обнаружена при попытке получить блокировку; попробуйте перезапустить транзакцию для запроса INSERT IGNORE INTO `pn_wfconfig` (`name`, `val`, `autoload`) VALUES ('wfSyncGeoIP.lock', '1536912837', 'no') выполнено require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, wordfence::veryFirstAction, wfConfig::createLock, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection_QueryCaching->query, W3TC\_CallUnderlying->query, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection->query, W3TC\DbCache_Wpdb->default_query" во время чтения заголовка ответа от upstream, клиент: 54.241.188.65, сервер: mysite.com, запрос: "GET /test-article/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9011", хост: "mysite.com", реферер: "search.yahoo.com/"
2018/09/14 01:14:03 [error] 21753#21753: *2869668 FastCGI отправил в stderr: "PHP сообщение: Ошибка базы данных WordPress Взаимная блокировка обнаружена при попытке получить блокировку; попробуйте перезапустить транзакцию для запроса INSERT IGNORE INTO `pn_wfconfig` (`name`, `val`, `autoload`) VALUES ('wfSyncGeoIP.lock', '1536912842', 'no') выполнено require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, wordfence::veryFirstAction, wfConfig::createLock, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection_QueryCaching->query, W3TC\_CallUnderlying->query, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection->query, W3TC\DbCache_Wpdb->default_query" во время чтения заголовка ответа от upstream, клиент: 13.56.241.76, сервер: mysite.com, запрос: "GET /2013/07/17/testing/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9011", хост: "philnews.ph", реферер: "android-app://com.google.android.googlequicksearchbox"
2018/09/14 01:14:03 [error] 21753#21753: *2869683 FastCGI отправил в stderr: "PHP сообщение: Ошибка базы данных WordPress Взаимная блокировка обнаружена при попытке получить блокировку; попробуйте перезапустить транзакцию для запроса INSERT IGNORE INTO `pn_wfconfig` (`name`, `val`, `autoload`) VALUES ('wfSyncGeoIP.lock', '1536912843', 'no') выполнено require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, wordfence::veryFirstAction, wfConfig::createLock, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection_QueryCaching->query, W3TC\_CallUnderlying->query, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection->query, W3TC\DbCache_Wpdb->default_query" во время чтения заголовка ответа от upstream, клиент: 54.193.113.108, сервер: mysite.com, запрос: "GET /sample/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9011", хост: "mysite.com", реферер: "mysite.com/articl1/"
2018/09/14 01:15:14 [error] 21753#21753: *2871964 FastCGI отправил в stderr: "PHP сообщение: Ошибка базы данных WordPress Взаимная блокировка обнаружена при попытке получить блокировку; попробуйте перезапустить транзакцию для запроса INSERT IGNORE INTO `pn_wfconfig` (`name`, `val`, `autoload`) VALUES ('wfSyncGeoIP.lock', '1536912914', 'no') выполнено require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('plugins_loaded'), WP_Hook->do_action, WP_Hook->apply_filters, wordfence::veryFirstAction, wfConfig::createLock, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection_QueryCaching->query, W3TC\_CallUnderlying->query, W3TC\DbCache_Wpdb->query, W3TC\DbCache_WpdbInjection->query, W3TC\DbCache_Wpdb->default_query

Это вызвано плагином безопасности (Wordfence, WP Cerber и т. д.), который создал “обязательную” частичную копию самого себя, которая работает, когда основной плагин отключен/отсутствует), обычно это называется “Режим Цитадели”. Это предотвращает любое злонамеренное повреждение базы данных, блокируя таблицы. Вы, вероятно, удалили основной плагин вручную, не дав ему удалить MU плагин. Удалите плагин в папке MU вручную также (в случае WP-Cerber это ‘aaa-wp-cerber.php’), или, предпочтительно, переустановите основной плагин и запустите скрипт удаления нормально, чтобы он удалил ВСЕ его таблицы и записи.

Ответ или решение

Проблема с сообщением об ошибке «Deadlock found when trying to get lock» в WordPress, связанная с плагином Wordfence, может быть вызвана несколькими факторами. Эта ошибка указывает на то, что происходит взаимная блокировка транзакций в базе данных, что может быть связано с конфликтами между различными процессами, обращающимися к одной и той же таблице одновременно.

Причины и решение проблемы:

  1. Отсутствие полного удаления плагина: Как вы уже выяснили, даже после удаления плагина Wordfence его "обязательно используемый" (MU) плагин может оставаться активным и блокировать базу данных. Это происходит, когда плагин был удален вручную, не позволяя Wordfence выполнить свою процедуру удаления, которая удаляет все зависимости и связанные с ними записи баз данных.

    Решение:

    • Перейдите в папку wp-content/mu-plugins и проверьте наличие файлов, связанных с Wordfence. Если такие файлы есть, удалите их.
    • Лучше всего переустановить Wordfence, чтобы убедиться, что все компоненты были правильно удалены.
  2. Конфликт с другими плагинами: Иногда существуют конфликты между различными плагинами, особенно если они оба пытаются получить доступ к одной и той же таблице базы данных.

    Решение:

    • Попробуйте отключить все плагины, кроме Wordfence, и посмотрите, исчезнет ли ошибка. Если да, поочередно включайте плагины, чтобы выявить конфликтующий.
  3. Неправильные настройки сервера или базы данных: Ошибки конфигурации или кеширования также могут приводить к блокировке.

    Решение:

    • Проверьте настройки вашего сервера и базы данных, чтобы убедиться, что они оптимально настроены для работы с WordPress.
    • Убедитесь, что движок базы данных, который вы используете (обычно MySQL), настроен для обработки транзакций корректно.
    • Проверьте, нет ли конфликтов в кешировании, если вы используете плагины кэширования, такие как W3 Total Cache или другие.
  4. Использование транзакций: Ошибка мертвого замка может также быть результатом неправильной работы с транзакциями в SQL-запросах.

    Решение:

    • Убедитесь, что ваши SQL-запросы (если вы разрабатываете свою логику) обрабатывают блокировки корректно и завершаются как можно быстрее.
    • Не держите активные транзакции дольше, чем необходимо, и старайтесь уменьшать количество блокировок, если это возможно.

Заключение:

Попробуйте сначала удалить все MU плагины, связанные с Wordfence, затем заново установите плагин. Это должно помочь устранить ошибку взаимной блокировки. Если проблема сохраняется, рассмотрите возможность отключения других плагинов и проверки настроек вашего сервера для выявления конфликта.

Оцените материал
Добавить комментарий

Капча загружается...