Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Проблема в upstream с max_fails/fail_timeout
- To: nginx-ru@xxxxxxxxx
- Subject: Проблема в upstream с max_fails/fail_timeout
- From: Животнев Влад <inkvizitor68sl@xxxxxxxxx>
- Date: Tue, 26 Jun 2012 21:38:02 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=WLXNjOvHFeJY0+jGHQgMSoPQT7mq0KdwMBBFWCHNk1g=; b=e9BdC79qTA7vnWKHRgJTlz3hsWw2yKigcFd5Y7czjX+V4+UpCSpzWVrmWG0+RTb0XP sxQ0ulvKlweRxSM3xKb2mdzIeXzaitEvfBlbZpBTk7AYUMQVsvvSdTe2MXzOqH23xtI5 ZT9Q3TkwAoKpEHyaDoi0zYtOIZR+xeF3h2uuzZ4DhAYUsJR+eiv1TWRlPG91HqGpInc0 0C+2GJGmxwEkFTG5AEfkv7+i0XvibU+41l1NPd9nEq9HXS7QuI0SllLokPUudy6DJ2Zb tIfunilRpJ30IBcXHyFWiJPcOxBCDxgnYWhn4Ko28rFtwFvcCl3woT2G5hYtdoYADj1F VyQA==
Есть подозрения, что под нагрузкой модуль 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;
}
}
Attachment:
some_nfront_log
Description: Binary data
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|