Welcome! Log In Create A New Profile

Advanced

Проблема в upstream с max_fails/fail_timeout

Животнев Влад
June 26, 2012 01:40PM
Есть подозрения, что под нагрузкой модуль upstream ведет себя
неведомым образом.

Конфиг в конце письма.

5 машин из 9 закрыты с -j DROP
Что ожидается ( в худшем случае):
В проксю прилетает 10-100-800 запросов. Она немного тупит, перебирает
риалы, в самом худшем случае отвечает за 3-4 секунды (5*500ms+время
ответа приложения, хоть оно и <0,1с). За это время оно делает 2
запроса в каждый из упавших фронтов, забывает про каждый закрытый на
300 секунд.

Что имеет в реальности.
Transactions: 358671 hits
Availability: 99.92 %

(0,8% запросов улетело в трубу, не вписавшись в таймаут siege).
Longest transaction: 95.05

Около 2-3% запросов - по 18+ секунд. Во время обстрела конструкции
можно браузером на глаз увидеть, как периодически достаточно часто
тупит балансер.

Ну и странности с собственно обработкой max_fails/fail_timeout - в
упавший риал прилетает 6-7 запросов за 20 секунд, потом через 20
секунд ещё 1-2, потом в риал nginx не ходит ~4 минуты 20 секунд, потом
цикл повторяется. Собственно, тут скорее интересно понять, откуда оно
взялось, что бы правильно покрутить параметры.
А вот про долгие ответы - очень интересно и плохо.

В аттаче есть лог обращений к одному из риалов во время обстрела
(отгрепанный из error.log балансера).

Выкручивание таймаутов в 50ms на connect, 200ms на read/send никаких
результатов не даёт.

Всё это выявлено под нагрузкой в ~700 rps, риалы сами по себе каждый
держат по 700-800 без особых проблем.

2xXeon E5645, 48Г памяти, dom0 - lucid, nginx запущен в lxc-виртуалке
с precise.

Конфиг балансера:

upstream elements-www {
# server nfront01g max_fails=2 fail_timeout=60s;
server nfront02g max_fails=2 fail_timeout=300s;
server nfront03g max_fails=2 fail_timeout=300s;
server nfront04g max_fails=2 fail_timeout=300s;
server nfront05g max_fails=2 fail_timeout=300s;

server nfront01f6 max_fails=2 fail_timeout=300s;
server nfront02f6 max_fails=2 fail_timeout=300s;
server nfront03f6 max_fails=2 fail_timeout=300s;
server nfront04f6 max_fails=2 fail_timeout=300s;
server nfront05f6 max_fails=2 fail_timeout=300s;
}


server {
listen 80;
server_name ...;

location / {
proxy_connect_timeout 500ms;
proxy_read_timeout 1000ms;
proxy_send_timeout 1000ms;
proxy_next_upstream error timeout invalid_header
http_500 http_502 http_503 http_504;
# http_404;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://elements-www;
}
}
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Attachments:
open | download - some_nfront_log (1.8 KB)
Subject Author Posted

Проблема в upstream с max_fails/fail_timeout Attachments

Животнев Влад June 26, 2012 01:40PM

Re: Проблема в upstream с max_fails/fail_timeout

Животнев Влад June 26, 2012 02:12PM

Re: Проблема в upstream с max_fails/fail_timeout

Maxim Dounin June 26, 2012 02:28PM

Re: Проблема в upstream с max_fails/fail_timeout

Zhivotnev Vlad June 26, 2012 05:08PM

Re: Проблема в upstream с max_fails/fail_timeout

Maxim Dounin June 27, 2012 03:28AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 297
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready