Зависание nginx из-за memcached
Vadim Osipov
nginx-forum на forum.nginx.org
Пн Май 23 07:19:18 UTC 2016
Здравствуйте
У нас 5 nginx, которые соединены с 2мя memcached. После того как на
memcached случился
segfault at 24 ip
000000000040dda0 sp 00007ff13d03cc10 error 4 in memcached[400000+16000];
каждый nginx worker (по настройке их 8 на каждом nginx) начинает
утилизировать 100% ядра CPU, вызывая "зависание" процессов nginx на всех
серверах. Когда подняли сбойнувший memcached с помощью monit, то ситуация не
изменилась. Пришлось убить все nginx и снова поднять. После этого, все
заработало как до segfault.
Версия nginx: 1.4.2
Версия memcached: 1.4.10
ОС: CentOS 6.5
Настройки memcached в nginx:
upstream memcached_screenshots {
server 127.0.0.1:11211;
hash $uri;
keepalive 512;
}
memcached_connect_timeout 60s;
memcached_read_timeout 60s;
memcached_send_timeout 60s;
Запуск memcached:
memcached -d -p 11211 -u memcached -m 16384 -c 1024 -P
/var/run/memcached/memcached.pid -t 2
Настройки nginx workers:
worker_processes 8;
timer_resolution 100ms;
worker_rlimit_nofile 50000;
worker_priority -5;
events {
worker_connections 100000;
use epoll;
}
Как я понимаю, segfault является следствием количества evictions в memcached
(200-2000) перед моментом остановки процесса (возможно баг в процессе
дефрагментации у memcached), и т.к. задан timeout, видимо, относительно
большой в 60 секунд, то те запросы, которые приходили на nginx, скапливались
в некоторой очереди в ожидании получения соединения, а каждый worker ходил
по этой очереди и проверял для каждого запроса, имеется ли возможность
соединиться с memcached или нет. Ну + к этому, возможно, когда случился
segfault сокет не отдался ОС (достоверно неизвестно на данный момент, после
segfault убился процесс memcached или нет). Видимо, уменьшение
connect|read|write timeout должно решить проблему. Но так ли это ?
Подскажите, пожалуйста, как если не устранить проблему, то уменьшить
возможность ее появления в ближайшем будущем. И является ли это проблемой
nginx (возможно, у клиента старая версия nginx и стоит обновиться до 1.10)
или все-таки проблема в конфигурации (что то нужно убрать, что то добавить)
?
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,267049,267049#msg-267049
Подробная информация о списке рассылки nginx-ru