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