ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: соединение зависае т при очень странных условиях.



On Sat, Dec 29, 2007 at 09:56:46AM +0300, Arkadiy Kulev wrote:

> Здравствуйте,
> 
> ОЧЕНЬ странное происходит с nginx при определенных условиях.
> У меня стоит кластер - одна главная машина - и много подчиненных.
> Главная машина (сервер-балансировщик) через lvs-NAT и keepalived
> (89.188.102.66:180) распределяет запросы по подчиненным (10.0.0.10-20:80).
> 
> На одну из подчиненных машин (10.0.0.12:80) поставил freebsd 6.2 и поставил 
> nginx.
> На ней же стоит и php через fastcgi.
> 
> Стал замечать странную особенность, при запросе маленьких файлов (1-2
> кб) через мою php программу-обработчик, загрузка "подвисает" - грубо
> говоря браузер полностью получает файл, но канал не закрывается, пример:
> http://elite.ru:180/article_image.php?image_id=27839&folder=article_images&w=c40
> На крупных файлах (больше 5k) все в порядке:
> http://elite.ru:180/article_image.php?image_id=27839&folder=article_images&w=500
> (два примерах сверху отдаются через keepalived 89.188.102.66:180).
> 
> НО!!!
> Стоит мне настроить на сервере-балансировщике (89.188.102.66) прямой
> линк (без keepalived, через простую программку balance), так проблема сразу
> исчезает.
> Попробуйте теперь эту ссылку (тот же nginx внутри 10.0.0.12:80, но на другом 
> внешнем
> порту 89.188.102.66:190):
> http://elite.ru:190/article_image.php?image_id=27839&folder=article_images&w=c40
> изображение загружается и все в порядке.
> 
> Подумал, что проблема в lvs и keepalived. Немного ликбеза - данная
> связка позволяет создать на базе линукса виртуальный load balancer,
> который сам не принимает соединения, а перенаправляет их на подчиненные
> сервера. Прелесть в том, что сервера с собственными внутренними
> адресами (10.0.0.10-20) видят запросы якобы от
> реальных внешних IP адресов (будто к ним посетители обращаются напрямую), но 
> когда
> они отвечают, то шлюз keepalived исправляетвозвращаемые пакеты (заменяет
> отправителя 10.0.0.10-20 на свой собственный адрес 89.188.102.66).
> 
> Но к сожалению, оказалось что нет. Я поднял на том же сервере
> lighttpd (10.0.0.12:88) и сделал для него отдельную запись в
> keepalived сервера-балансировщика (89.188.102.66:200). И ссылка работает 
> нормально.
> 
> Пример:
> http://elite.ru:200/article_image.php?image_id=27839&folder=article_images&w=c40
> 
> Для nginx и lighttpd в обоих случаях используется один и тот же
> fastcgi, поэтому проблема не в php.
> 
> Следовательно, методом дедукции делаю предположение, что проблема в nginx...
> Помогите, люди добрые...

В моих тестах 180 и 190 работают, 200 - висит:

>nc elite.ru 190
nc elite.ru 180
GET /article_image.php?image_id=27839&folder=article_images&w=c40 HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Server: nginx/0.6.24
Date: Sat, 29 Dec 2007 07:23:00 GMT
Content-Type: text/html
Content-Length: 161
Connection: close
Location: 
http://gallery.ru/article_image.php?image_id=27839&folder=article_images&w=c40?image_id=27839&folder=article_images&w=c40

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/0.6.24</center>
</body>
</html>


>nc elite.ru 190
GET /article_image.php?image_id=27839&folder=article_images&w=c40 HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Server: nginx/0.6.24
Date: Sat, 29 Dec 2007 07:23:46 GMT
Content-Type: text/html
Content-Length: 161
Connection: close
Location: 
http://gallery.ru/article_image.php?image_id=27839&folder=article_images&w=c40?image_id=27839&folder=article_images&w=c40

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/0.6.24</center>
</body>
</html>


>nc elite.ru 190
nc elite.ru 200
GET /article_image.php?image_id=27839&folder=article_images&w=c40 HTTP/1.0

^C



-- 
Igor Sysoev
http://sysoev.ru/en/



 




Copyright © Lexa Software, 1996-2009.