В настоящее время я получаю довольно большой поток HTTP, и это заставляет мой обратный прокси-сервер nginx производить 502 Bad Gateway.
У меня есть внешний сервер, на котором запущен nginx в качестве прокси-сервера для моего внутреннего сервера, но он просто получает кучу connect() failed (110: Connection timed out) while connecting to upstream
ошибок. Тонны из них. Если я обойду прокси-сервер для подключения к бэкэнду, я смогу нормально запустить сайт, поэтому я знаю, что он где-то в обратном прокси. Тем не менее, я понятия не имею, как определить, почему это время ожидания.
Любая помощь?
запуск nginx 1.2.3 на CentOS 6.2
nginx
reverse-proxy
обкрадывать
источник
источник
Ответы:
Я предполагаю, что вы уже подняли свой уровень регистрации ошибок Nginx до отладки. Если нет, начните там.
Ваша лучшая ставка, вероятно, будет использоваться
strace
для просмотра системных вызовов, выполняемых Nginx. В частности, вы хотите обратить внимание наconnect()
звонки и следить за их кодами возврата (man 2 connect
можете быть вашим другом здесь).Получив эту информацию, вы сможете лучше сделать обоснованное предположение о том, связана ли проблема с вашим прокси-сервером внешнего интерфейса или как-то связано с взаимодействиями прокси-сервера и внутреннего сервера приложений.
источник
Он не станет намного более педантичным, чем этот, если вы не захотите использовать датчики dtrace:
Установите уровень журнала отладки: /etc/nginx/nginx.conf:
Настройте tcpdump в другом окне:
Следите за файлами журналов в другом окне:
Запуск nginx в интерактивном режиме с помощью strace:
А потом
Дальнейшую отладку можно выполнить с помощью скомпилированного nginx
--with-debug
. Проверьте это, запустив:Еще один хороший модуль, не скомпилированный по умолчанию: HttpStubStatusModule . По всей вероятности, любая приличная установка потребует скомпилированного nginx (настоятельно рекомендуется использовать упаковочные инструменты дистрибутива).
Большинство из них не подходят для производственного использования, посмотрите на компиляцию nginx с помощью gperf, если вам нужно больше статистики.
источник
Похоже, вы отлаживаете сайт с высоким трафиком.
Используйте
debug
сdebug_connection
директивой, чтобы журнал ошибок nginx отображал журналы отладки только с вашего IP.Как только вы начнете видеть некоторые полезные журналы ошибок, а не активировать опцию отладки для всего конфига nginx, добавьте отдельную
error_log /path/to/some/file/ debug;
директиву вlocation {..}
блок, отвечающий за соединение reverse_proxy.Таким образом, вы сможете изолировать журнал ошибок отладки только от вашего IP.
Попробуйте связать это с запросом, который вы делаете (из вашего браузера).
Например, проверьте: https://easyengine.io/tutorials/nginx/debugging/
На шаг впереди вы можете использовать HttpEchoModule от Nginx
источник
Я никогда не находил Nginx узким местом, в большинстве случаев он более чем способен, чем бэк-энд. Но если вы тестировали без Nginx и не обнаружили ошибок, то это будет либо (или оба):
Не видя ваших конфигов Nginx, никто не может прокомментировать первое. А без подходящих выходов из ОС никто не сможет прокомментировать последнее.
источник