Ошибка 502, linux 2.6, в бэкэнде апач 1.3 через tcp-сокеты

Igor Sysoev is at rambler-co.ru
Wed Jan 31 00:42:15 MSK 2007


On Tue, 30 Jan 2007, [UnKn0wN] wrote:

> On Tue, 30 Jan 2007 19:16:59 +0300
> alexus <alexus at fenek.ru> wrote:
>
>> Здравствуйте, Игорь.
>>
>>>> Последнее время (с ростом нагрузки) в логе появляются следующие строчки, а клиенты получают 502 Bad Gateway.
>>>> 2007/01/30 06:01:03 [error] 16336#0: *3706761 upstream prematurely closed connection while reading response header from upstream, client: 66.249.65.238, server: www.coolsite.net, URL: "/top10/?curPos=90", upstream: "http://127.0.0.1:81/top10/?curPos=90", host: "www.coolsite.net"
>>
>>> Это означает, что бэкенд закрыл соединение, ничего не передав.
>>> Возможно, он вышел по сигналу, посмотрите error_log Апача.
>>
>> В error_log апача следующее
>> [Tue Jan 30 19:04:57 2007] [info] [client 127.0.0.1] send timed out
>> [Tue Jan 30 19:04:57 2007] [info] [client 127.0.0.1] client stopped connection before rvputs completed
>>
>> В access_log
>> 127.0.0.1 - - [30/Jan/2007:19:04:57 +0300] "GET /top10/ HTTP/1.0" 200 - "http://cool.site.ru/dietology/dietology_25.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.7 (build 01670))"
>>
>> nginx error_log
>> 2007/01/30 19:04:57 [error] 16338#0: *4132604 upstream prematurely closed connection while reading response header from upstream, client: 194.186.86.50, server: cool.site.ru, URL: "/top10/", upstream: "http://127.0.0.1:81/top10/", host: "cool.site.ru", referrer: "http://cool.site.ru/dietology/dietology_25.html"
>>
>> Процессы никакие не умирают, видно по PID и времени запуска.
>
> Была похожая проблема. nginx выдает ошибку 502 по причине того, что апач закрывает соединение раньше, чем все данные отдадутся клиенту. Имеет смысл разгрузить сервер, либо повысить мощность оного. Как вариант, проверьте файрвол на предмет check-state - keep-state, у меня на сервере проблема была в нем. Возможно, клиенты слишком долго тянут инфу, и апач раньше закрывает сокеты, чем все отдастся nginx'у, посему увеличьте время соединения апача и нгинкса. Проверьте пропускную способность канала, возможно, имеет смысл либо ставить 2 сетевых карты и транковать их, либо сразу ставить гигабитную сетевую.

Закрывать соединение до того, как данные будут реально переданы клиенту -
это нормальная практика.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list