Диагностика ошибки HTTP 500 с помощью Apache и HAProxy - PullRequest
0 голосов
/ 07 сентября 2018

У меня возникла проблема с приложением, над которым я работаю, и которое полностью меня озадачило. Программа представляет собой приложение для iOS, которое должно иметь возможность асинхронно загружать изображения с сервера SVN. Пользователи сообщали о пропущенных изображениях, и когда я копался в коде, я заметил, что у некоторых загрузок было время ожидания. Я попытался увеличить время ожидания для запроса и добавить код, чтобы повторить попытку в случае неудачи.

Просматривая журналы доступа apache для веб-сервера, я заметил, что некоторые запросы на загрузку не выполнялись с ошибками «500». Проблема в том, что я на самом деле не вижу подробностей, регистрируемых для этих ошибок в журналах ошибок apache верхнего уровня или в журналах ошибок apache для этого сайта. Большая часть информации, которую я могу найти, предназначена для людей, имеющих проблемы с php, но я уже исключил это как возможность. Журнал ошибок для php включен, и я ничего не вижу в этих журналах.

Другая мысль заключалась в том, что это может быть проблема с прокси-сервером (haproxy), который перенаправляет запросы на мой веб-сервер, но, похоже, он также работает правильно. Если я просматриваю строку в журнале haproxy для запроса на сбой, он показывает статус «200».

Может кто-нибудь пролить свет на это? Отсутствующие изображения являются серьезной проблемой для моих пользователей, и я не знаю, что еще посмотреть.

Обновление: Я думаю, что я могу исключить прокси-сервер в качестве причины. Я изменил код так, чтобы он указывал прямо на сервер SVN через IP-адрес, и результаты были такими же.

журнал доступа apache

"GET /svn/mysite/33245/img/13301.jpg HTTP/1.1" 500 500 1 251118 "-" "MyApp/1.1.57 CFNetwork/758.5.3 Darwin/15.6.0"

журнал прокси:

http-in backend_www_static/web01 21/0/1/3/1746 200 96024 - - CD-- 3/3/1/1/0 0/0 "GET /svn/mysite/33245/img/13301.jpg HTTP/1.1"

1 Ответ

0 голосов
/ 13 сентября 2018

В конце концов я понял, что корень моей проблемы на самом деле был на стороне клиента. Я одновременно отправлял слишком много запросов на веб-сервер, и он задыхался (см. Увеличение переменной из асинхронного блока в Objective-C для получения дополнительной информации). Тем не менее, я никогда не выяснял, как на самом деле найти какие-либо соответствующие журналы, поэтому я пока оставлю это открытым.

...