Вопрос или проблема
Я надеюсь, что кто-то сможет направить меня в правильном направлении, чтобы найти эту проблему. Я недавно установил HHVM на своем сервере с PHP в качестве резервного варианта. С тех пор у меня возникли проблемы в админке WP.
Когда я пытаюсь опубликовать или обновить пост, мое соединение истекает через 2 минуты, и в журнале ошибок NGINX я вижу следующее:
recv() failed (104: Connection reset by peer) while reading response header from upstream, client
Что я не могу понять, так это почему это происходит со мной, но не с моим сервисом управления сервером или с моим автором, которые оба пытались и не столкнулись с этой проблемой.
Я сделал трассировку и пинг до своего сервера, и никаких проблем с задержкой не отображается. Я пробовал разные браузеры, изменял свои DNS и пытался подключиться через VPN, и у меня по-прежнему та же проблема. У меня нет никаких других проблем, кроме этого.
Это выделенный сервер с достаточным количеством доступных ресурсов, и эта проблема началась только после установки HHVM. Админка стала очень медленной до установки Redis, но это не помогло с проблемой таймаута. Сначала у меня не было таймаута, но теперь я не могу ни публиковать, ни обновлять без таймаута, хотя данные сохраняются в БД.
Есть ли другие способы выяснить, в чем может быть проблема, или какие-то идеи о том, в чем эта проблема?
Исходя из симптомов, я бы сказал, что NGINX истекает, ожидая результат от HHVM.
Когда это происходит, клиент получает ошибку, но php процесс, исполняющий этот запрос, никогда не останавливается, поэтому вы находите данные, сохраненные в БД.
Можете ли вы получить больше информации из журналов php?
Еще одно, что я помню о WordPress, это то, что админская часть немного нагружает БД.
Кстати, вот очень похожий вопрос:
Ответ или решение
Ошибка 502 при попытке постинга/обновления в WordPress после установки HHVM
Введение
Ошибка 502 Bad Gateway является распространённой проблемой при работе с WordPress, особенно после установки HHVM (HipHop Virtual Machine) в качестве основного интерпретатора PHP. Данная ошибка может создаваться во множестве сценариев, и понимание их причин — важное звено в процессе устранения неполадок. В этом документе мы рассмотрим причины возникновения ошибки 502, предлагаемые решения и методы для диагностики проблемы.
Описание проблемы
Согласно вашему сообщению, после установки HHVM вы столкнулись с тайм-аутом во время попыток обновления контента через административную панель WordPress. У вас есть доступ к ресурсам сервера, и проблема не возникает для ваших коллег. Это может произойти из-за различных факторов, включая настройки NGINX, конфигурацию HHVM и запросы к базе данных.
Лог NGINX
Ваш лог ошибок указывает на это:
recv() failed (104: Connection reset by peer) while reading response header from upstream
Это говорит о том, что сервер NGINX не может дождаться ответа от HHVM и сбрасывает соединение, что приводит к ошибке 502. Вы сообщаете, что данные при этом сохраняются в базе данных, что может указывать на то, что процесс PHP не завершает выполнение корректно, но данные успевают быть записаны в БД до возникновения ошибки.
Компоненты системы
-
HHVM: Проект, оптимизированный для выполнения PHP, который не всегда совместим с некоторыми аспектами WordPress, особенно если используются плагины или темы, требующие специфического поведения PHP.
-
NGINX: Как ваш веб-сервер, он удерживает настройки тайм-аутов, которые могут быть слишком низкими для запросов, требующих значительных ресурсов, таких как операции обновления в WordPress.
-
База данных: Administrations panel может быть ресурсном неэффективной, что дополнительно усложняет ситуацию.
Устранение неполадок
-
Проверьте настройки таймаутов NGINX: Вы можете улучшить таймауты, внеся изменения в конфигурацию:
http { ... proxy_read_timeout 300; proxy_send_timeout 300; fastcgi_read_timeout 300; fastcgi_send_timeout 300; ... }
Измените эти значения, чтобы дать время HHVM завершить выполнение запроса.
-
Логи HHVM: Убедитесь, что вы включили детализированные логи (verbose) в настройках HHVM. Это поможет вам понять, что происходит на уровне выполнения PHP.
В файле конфигурации HHVM (
server.ini
):hhvm.log.level = Debug
-
Оптимизация базы данных: Убедитесь, что база данных оптимизирована. Используйте такие инструменты, как phpMyAdmin, для проверки индексов и выполнения ANALYZE/OPTIMIZE для улучшения производительности запросов.
-
Проверка плагинов и тем: Убедитесь, что установленные плагины и темы совместимы с HHVM. Отключите плагины по одному, чтобы определить, какой из них может вызывать проблемы.
-
Профилирование производительности: Если проблема не устранена, рассмотрите использование инструментов профилирования, таких как Xdebug, чтобы выявить узкие места в вашей системе.
Заключение
Проблема с ошибкой 502 Bad Gateway может быть сложной, но с помощью системного подхода к устранению неполадок можно найти решение. Следуйте указанным рекомендациям, чтобы диагностировать и решить проблему. Если ни одно из решений не помогает, возможно, стоит рассмотреть вопрос о возврате к стандартному PHP для избежания несовместимостей с WordPress.
Ваша специфика, связанная с использованием HHVM, очень важна, поэтому продолжайте отслеживать все изменения и тестировать систему, чтобы найти оптимальное решение.