Re: Nginx возвращает 499 при проксировании после нескольких часов работы

Maxim Dounin mdounin at mdounin.ru
Tue Jul 1 00:01:00 UTC 2014


Hello!

On Mon, Jun 30, 2014 at 01:27:39PM +0400, Andrey Ilyin wrote:

> Всем добрый день!
> 
> Столкнулся с довольно странной проблемой на боевом сервере.
> 
> Через ~4-6 часов работы nginx перестает проксировать запросы на второй
> сервер и возвращает статус 499.
> 
> При  этом  все  запросы,  которые  проксируются  на этом же сервере на
> Apache отрабатывают нормально.
> 
> После reload или restart все возвращается в нормальное русло.
> 
> Проблема появилась после того как переехали на новый сервер и обновили
> nginx с версии 1.4 до 1.7.1.
> 
> В debug log'e
> http run request
> http upstream check client, write event:0
> epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too while connecting to upstream
> 
> 
> Подскажите,  пожалуйста,  возможно  кто-то  уже  сталкивался  с данной
> проблемой, как можно это решить?

Код 499 означает, что клиент устал ждать и закрыл соединение.  
Вероятнее всего из-за того, что от "второго" сервера долго не 
приходит ответ.

> Сервер работает под ОС Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux
> nginx version: nginx/1.7.1
> 
> Включенные модули nginx'a можно посмотреть тут
> https://www.dropbox.com/s/uotxbtyks0xb15j/nginx-modules.txt
> 
> Дебаг логи
> https://www.dropbox.com/s/avjetz8wcrx6fdy/filtered_bad_renamed.log

Судя по логу, не устанавливается соединение с бекендом:

2014/06/30 06:39:20 [debug] 24188#0: *13861 connect to 123.123.123.123:80, fd:41 #13864
2014/06/30 06:39:20 [debug] 24188#0: *13861 http upstream connect: -2
2014/06/30 06:39:20 [debug] 24188#0: *13861 posix_memalign: 00000000023F01B0:128 @16
2014/06/30 06:39:20 [debug] 24188#0: *13861 event timer add: 41: 90000:1404110450952

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

Смотрите, что у вас происходит на бекенде, он скорее всего 
банально перегружен и не справляется с нагрузкой.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru