Dead backend detection
Maxim Dounin
mdounin на mdounin.ru
Ср Ноя 23 12:53:39 UTC 2011
Hello!
On Wed, Nov 23, 2011 at 11:58:01AM +0200, Sergey Kobzar wrote:
> On 11/23/11 09:54, Maxim Dounin wrote:
> >Hello!
> >
> >On Wed, Nov 23, 2011 at 12:50:29AM +0200, Sergey Kobzar wrote:
> >
> >>Добрый вечер
> >>
> >>Есть ли возможность (в ралтайме) узнать, что бэкенд был признан
> >>помершим и выкинут из пула и причину?
> >>
> >>Слишком часто у меня на фронтэнде проскакивает 502 ошибка:
> >>
> >># cat /var/log/nginx/default_access.log | grep ' HTTP/1.0" 502 ' | wc -l
> >>4498
> >>
> >>Например:
> >>207.46.13.98 - - [22/Nov/2011:04:24:57 +0000] "GET
> >>/Companies/go-hongkong-hotels/0270003228578 HTTP/1.1" 502 9603 "-"
> >>"Mozilla/5.0 (compatible; bingbot/2.0;
> >>+http://www.bing.com/bingbot.htm)" "-"
> >>
> >>Т.е. была ли проблема с сетью, либо же фронтенд получил 50х ошибку
> >>от быкенда.
> >
> >Я бы рекомендовал начать с базовых вещей: логгировать
> >$upstream_status / $upstream_response_time.
>
> Максим, спасибо.
>
> А в отдельный logfile собирать статистику по бэкендам на фронтенде
> есть возможность или только accesslog?
>
> Нагрузка довольно большая и за день accelog вырастает до гигабайта -
> не совсем удобно с ним работать.
Можно определить отдельный access_log, куда собирать только
информацию по $upstream_*. Опять же, вращать логи часто - никто
не мешает, равно как и читать их по мере накопления.
Ну и вообще говоря все ошибки работы с upstream'ами - логгируются
в error_log. Пришедшие от бекенда ответы с ошибками, правда, туда
не попадают, но они должны быть залоггированы на бекенде.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru