Ошибка 502 при попытке отправить/обновить в WordPress после установки HHVM

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

Я надеюсь, что кто-то сможет направить меня в правильном направлении, чтобы найти эту проблему. Я недавно установил 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, это то, что админская часть немного нагружает БД.

Кстати, вот очень похожий вопрос:

ошибки nginx “recv() failed (104: Connection reset by peer) while reading response header from upstream”

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

Ошибка 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 не завершает выполнение корректно, но данные успевают быть записаны в БД до возникновения ошибки.

Компоненты системы

  1. HHVM: Проект, оптимизированный для выполнения PHP, который не всегда совместим с некоторыми аспектами WordPress, особенно если используются плагины или темы, требующие специфического поведения PHP.

  2. NGINX: Как ваш веб-сервер, он удерживает настройки тайм-аутов, которые могут быть слишком низкими для запросов, требующих значительных ресурсов, таких как операции обновления в WordPress.

  3. База данных: Administrations panel может быть ресурсном неэффективной, что дополнительно усложняет ситуацию.

Устранение неполадок

  1. Проверьте настройки таймаутов NGINX: Вы можете улучшить таймауты, внеся изменения в конфигурацию:

    http {
        ...
        proxy_read_timeout 300;
        proxy_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_send_timeout 300;
        ...
    }

    Измените эти значения, чтобы дать время HHVM завершить выполнение запроса.

  2. Логи HHVM: Убедитесь, что вы включили детализированные логи (verbose) в настройках HHVM. Это поможет вам понять, что происходит на уровне выполнения PHP.

    В файле конфигурации HHVM (server.ini):

    hhvm.log.level = Debug
  3. Оптимизация базы данных: Убедитесь, что база данных оптимизирована. Используйте такие инструменты, как phpMyAdmin, для проверки индексов и выполнения ANALYZE/OPTIMIZE для улучшения производительности запросов.

  4. Проверка плагинов и тем: Убедитесь, что установленные плагины и темы совместимы с HHVM. Отключите плагины по одному, чтобы определить, какой из них может вызывать проблемы.

  5. Профилирование производительности: Если проблема не устранена, рассмотрите использование инструментов профилирования, таких как Xdebug, чтобы выявить узкие места в вашей системе.

Заключение

Проблема с ошибкой 502 Bad Gateway может быть сложной, но с помощью системного подхода к устранению неполадок можно найти решение. Следуйте указанным рекомендациям, чтобы диагностировать и решить проблему. Если ни одно из решений не помогает, возможно, стоит рассмотреть вопрос о возврате к стандартному PHP для избежания несовместимостей с WordPress.

Ваша специфика, связанная с использованием HHVM, очень важна, поэтому продолжайте отслеживать все изменения и тестировать систему, чтобы найти оптимальное решение.

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

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