необъяснимые ошибки H18 в приложении Rails на Heroku - PullRequest
0 голосов
/ 11 октября 2018

У меня очень странная проблема с моим приложением rails на Heroku, которую я не могу решить почти месяц.Это проблема, которая возникает только на рабочем сервере, и я не могу реплицировать ее в процессе разработки, и в которой журналы не содержат ошибок, принимают ошибки H18.

Вот что происходит.Приложение работает нормально около 12 часов, затем в определенный момент количество запросов резко возрастает, и Heroku начинает сообщать о регулярных ошибках H18

heroku1 heroku2. В этот момент приложение не завершается сбоем, но все запросы, которые вызывают какие-то запросы open-uri, терпят неудачу (в основном запрос к внешнему веб-сервису), возвращают ошибку 500.Обычные запросы, которые просто отображают статическое представление, по-прежнему продолжают работать.

Журналы не особенно полезны.

Почти каждая ошибка H18 связана с запросом на /robots.txt, но по крайней мере одна ошибка связана с запросом на активы:выдержка

Oct 10 21:09:32 lombardpress-web heroku/router: sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/robots.txt" host=scta.lombardpress.org request_id=e0e344d1-0349-4b0a-8db0-3c6e3ad3e99f fwd="157.55.39.188" dyno=web.1 connect=0ms service=209ms status=503 bytes= protocol=http Oct 10 21:09:41 lombardpress-web heroku/router: sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/assets/application-38a4580edd72e30f34ea76583ab7e1b1b5654c72a6313ece935177d23b0398d3.css" host=scta.lombardpress.org request_id=fdd88ca2-140e-4051-9011-4d81ca218f19 fwd="157.55.39.206" dyno=web.1 connect=0ms service=252ms status=503 bytes= protocol=http Oct 10 21:33:55 lombardpress-web heroku/router: sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/robots.txt" host=scta.lombardpress.org request_id=5aa463f5-43ff-4b74-a2de-e944aa9d2387 fwd="46.229.168.147" dyno=web.1 connect=0ms service=254ms status=503 bytes= protocol=http Oct 10 21:38:23 lombardpress-web heroku/router: sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/robots.txt" host=scta.lombardpress.org request_id=2300949d-8998-4ed0-a4ab-bf1975e93cc6 fwd="216.244.66.197" dyno=web.1 connect=0ms service=220ms status=503 bytes= protocol=http

Как только ошибки начинаются, мне просто нужно перезапустить приложение, и все снова работает нормально для еще 12 или около того ошибок.Даже запросы к robots.txt.Но примерно через 12 часов такая же проблема возникает.

Из-за веб-сканеров я бы оценил, что приложение получает запрос каждые 2-4 секунды.В противном случае это не особо интенсивный сайт.

Heroku предоставил только самые маленькие отзывы

Сокет бэкэнда, принадлежащий веб-процессу вашего приложения, был закрыт до того, как бэкэнд возвратил HTTP-ответ,Это происходит на уровне приложения или веб-сервера, поэтому мы не можем предоставить дополнительную информацию.Вы можете видеть, что запрос тратит некоторое время в службе приложения = 1118 мс, прежде чем вернуть статус 500. Интересно, происходит ли сбой промежуточного программного обеспечения (может быть, оно выполняет внешние запросы?) До того, как оно достигнет вашего фактического стека rails.Я бы предложил начать с поиска там.

Код с открытым исходным кодом и доступен здесь, если кто-то заинтересован в поиске: https://github.com/lombardpress/lombardpress-web

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...