Вопрос или проблема
На сайте несколько авторов/администраторов, которые иногда могут редактировать/публиковать сообщения одновременно.
Когда более одного пользователя с правами автора/администратора редактирует/публикует одно сообщение, админка WP становится чрезвычайно медленной.
Я понимаю, что в этой ситуации может быть дополнительная загрузка, однако очень заметно, как медленно загружаются страницы в админке.
На сайте 200-300 сообщений, и он соответствует всем основным веб-метрикам. Установлено управление Heartbeat и установлено на 60.
Сайт размещен с использованием cPanel на 4GB RAM KVM VPS (не делится ни с кем другим).
Кто-нибудь сталкивался с этим?
Да, возможно, что админка WordPress становится медленной, когда несколько администраторов входят в систему и редактируют или публикуют сообщения одновременно. Вот несколько решений, которые вы можете попробовать:
- Heartbeat API: Heartbeat API — это функция, которая позволяет WordPress отслеживать активности вошедших в систему пользователей. Это может быть нагрузкой на ресурсы, особенно если несколько администраторов вошли в систему и активно используют админку.
- Плагины: Некоторые плагины также могут замедлить админку WordPress. Если у вас установлено много плагинов, стоит отключить их по одному, чтобы увидеть, не вызывает ли один из них проблему.
- База данных: База данных WordPress также может стать медленной, если она не оптимизирована должным образом. Вы можете использовать плагин, такой как WP-Optimize, для оптимизации вашей базы данных.
В моем случае это было так же, как у вас, и я выяснил, что причиной является то, что система автоматического обновления WordPress делает запросы к API WordPress на api.wordpress.org для проверки обновлений ядра, плагинов и тем при загрузке админки, на моем личном компьютере эти запросы к API могут занимать до 10 секунд (фронтенд этого не делает, и также WordPress проверяет обновления каждые 12 часов, так что иногда вы будете замечать, что все очень медленно, а затем в другие времена будет нормально). Всё содержится в файле /wp-includes/update.php.
Я давно это подозревал и протестировал, настроив прокси для контейнера docker с помощью mitmproxy для мониторинга исходящих запросов, и наконец-то выяснил это, однако это может быть из-за моей нестабильной сетевой связи с сервером API WordPress, однако я обнаружил, что это не действительно необходимо, когда используешь на производственном сервере, поэтому я отключил эти обновления. Однако при дальнейшем исследовании я обнаружил, что некоторые мои плагины напрямую вызывают функцию обновления плагинов wp_update_plugins() вместо того, чтобы позволить WordPress сделать это, и я не смог найти никакой настройки, которую можно было бы использовать в wp-config.php для отключения всех этих обновлений, поэтому я предпринял более негативный подход, отредактировав файл update.php, отключив все эти автоматические проверки обновлений на веб-версии на сервере, и периодически открывая его снова, чтобы WP проверял обновления с локальной версии на моем компьютере. И вот так я решил эту проблему, надеюсь, это поможет вам. Извините, если грамматика некорректна, потому что я использую Google Translate, я вьетнамец 😀
Ответ или решение
Замедление админки WordPress при работе нескольких администраторов одновременно — это довольно распространённая проблема, которая может быть вызвана различными факторами. Для её решения необходимо проанализировать несколько возможных причин и принять соответствующие меры. Рассмотрим основные аспекты, которые могут влиять на производительность системы, и возможные пути их оптимизации.
Теория (Theory)
1. API Heartbeat
WordPress использует Heartbeat API для отслеживания активности пользователей и их присутствия в системе. Хотя это и удобно, при большом количестве активных пользователей оно может серьёзно нагрузить серверные ресурсы. Даже если у вас установлен плагин для контроля Heartbeat, например, Heartbeat Control, не всегда снижение частоты запросов является эффективным решением.
2. Плагины и темы
Каждый плагин и тема могут добавлять своё воздействие на производительность админки. Многие из них могут быть причиной конфликтов и замедлений из-за плохо оптимизированного кода или неэффективных запросов к базе данных. Для идентификации возможных проблемных плагинов, полезно временно отключать их поочерёдно и следить за изменениями.
3. Оптимизация базы данных
С течением времени база данных WordPress может перегружаться ненужными данными. Это может быть связано с ревизиями постов, временными данными, спам-комментариями и т.д. Неоптимизированная база данных замедляет операции, выполняемые в админке. Плагины, такие как WP-Optimize, способны помочь в очистке и оптимизации базы данных.
4. Проверка обновлений
Автоматические проверки обновлений ядра WordPress, плагинов и тем также могут стать причиной замедлений админки, если соединение с api.wordpress.org медленное или нестабильное. Эти запросы могут занимать значительное время и ресурсы сервера, особенно в случаях с плохим сетевым соединением.
Пример (Example)
Рассмотрим пример из практики. Один из пользователей обнаружил, что именно автоматическая система обновлений была источником его проблем. Проверка обновлений ядра и плагинов осуществлялась слишком часто, в результате чего заметно повышалась нагрузка на сервер. Он решил эту проблему, отключив автоматические обновления и периодически вручную проверяя обновления на своем локальном компьютере.
Применение (Application)
Учитывая вышеизложенные аспекты, можно предложить следующие шаги для решения проблемы с медленной админкой:
-
Настройка Heartbeat API: Рассмотрите возможность ещё большего снижения частоты запросов Heartbeat или, возможно, полного его отключения на неактуальных страницах.
-
Оптимизация плагинов и тем: Проведите аудит установленных плагинов и тем. Отключите ненужные и замените ресурсоёмкие плагины на более лёгкие и хорошо оптимизированные альтернативы.
-
Работа с базой данных: Регулярно очищайте и оптимизируйте базу данных. Удаляйте ненужные ревизии, спам-комментарии и временные данные. Используйте специализированные плагины для автоматизации этого процесса.
-
Контроль обновлений: Возможно, стоит отключить автоматические проверки обновлений в рабочем окружении. Это можно осуществить путем редактирования конфигурационных файлов или скриптов WordPress. При необходимости, обновления можно проверять и устанавливать вручную в удобное время.
-
Повышение производительности сервера: Убедитесь, что ваш сервер достаточно хорошо оптимизирован и использует современные технологии (например, PHP 8.x, HTTP/2), чтобы обеспечить быструю и стабильную работу. Можно также рассмотреть использование объектов кеширования или серверов для кеширования (Redis, Memcached) для снижения нагрузки на базу данных.
В совокупности, данные шаги помогут существенно улучшить производительность админки WordPress даже при работе нескольких администраторов одновременно. Детальная диагностика и постепенное внедрение улучшений — это ключевой подход к решению проблемы.