Re: Зависание nginx из-за memcached
Vadim Osipov
nginx-forum на forum.nginx.org
Чт Май 26 10:17:00 UTC 2016
Новые подробности. Благодаря советам, решил попытаться дать такую нагрузку
на nginx, чтобы потом заsegfault-ив memcached, попытаться смоделировать у
проблему у клиента. Однако, заинтересовала ситуация, возможно, подобная
тому, что есть у клиента, по меньшей мере, по загрузке CPU и косвенным
признакам, что memcached является причиной.
В общем.
upstream memcached_cluster {
server 10.197.162.35:11211; # <------ такого memcached нету либо он
не запущен (или упал, завис как в случае как у клиента)
hash $uri/3.6;
hash_again 1000;
keepalive 512;
}
Запускаю nginx с описанным выше upstream.
Если запросов нету, которые приводят к обращению к memcached_cluster, то все
нормально,
но когда приходит несколько запросов (может быть даже 1, точно не скажу, но
5-10 точно хватит), начинается загрузка CPU примерно 96-99.5% при server,
который не работает (или был, но упал/завис).
Естественно, если server работает, то все нормально и такой загрузки нету.
После такой загрузки, service nginx stop/restart пытается остановить,
перезапустить сервис, но ... я не дождался. Более подробно - ниже.
------------------------------------------------------------------------------------------------------------
ps uax | grep nginx
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
nginx 5072 0.0 0.2 428488 16500 ? S 11:03 0:00 nginx:
worker process
nginx 5073 0.0 0.2 428488 16500 ? S 11:03 0:00 nginx:
worker process
nginx 5074 0.0 0.2 428488 16500 ? S 11:03 0:00 nginx:
worker process
nginx 5075 0.0 0.0 416764 4724 ? S 11:03 0:00 nginx:
cache manager process
root 15711 0.0 0.1 416764 6532 ? Ss May25 0:00 nginx:
master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 15715 3.8 0.2 426956 15468 ? R< May25 40:17 nginx:
worker process
root 5130 0.0 0.0 103268 896 pts/2 S+ 11:03 0:00 grep nginx
------------------------------------------------------------------------------------------------------------
top
top - 11:08:11 up 2 days, 2 min, 3 users, load average: 1.03, 1.03, 0.92
Tasks: 96 total, 2 running, 94 sleeping, 0 stopped, 0 zombie
Cpu(s): 98.0%us, 0.0%sy, 2.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si,
0.0%st
Mem: 5993264k total, 2813292k used, 3179972k free, 221772k buffers
Swap: 3145724k total, 0k used, 3145724k free, 1060512k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15715 nginx 15 -5 416m 15m 1256 R 97.2 0.3 44:23.91 nginx
------------------------------------------------------------------------------------------------------------
# service nginx restart
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Stopping
nginx:..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^C
Пришлось, как видно, сделать Ctrl + C, а затем kill -9
------------------------------------------------------------------------------------------------------------
error_log в режим error:
2016/05/26 11:21:29 [alert] 15711#0: worker process 15715 exited on signal
9
2016/05/26 11:24:42 [error] 7159#0: *1 upstream timed out (110: Connection
timed out) while connecting to upstream, client: 172.16.11.46, server:
10.197.162.35, request: "GET /url1?rnd=0.7008626744856947 HTTP/1.1",
upstream: "memcached://10.197.164.22:11211", host: "172.20.1.240", referrer:
"http://172.20.1.240/url2"
2016/05/26 11:24:47 [error] 7159#0: *1 upstream timed out (110: Connection
timed out) while connecting to upstream, client: 172.16.11.46, server:
10.197.162.35, request: "GET /url1?rnd=0.7008626744856947 HTTP/1.1",
upstream: "memcached://10.197.162.35:11211", host: "172.20.1.240", referrer:
"http://172.20.1.240/url2"
------------------------------------------------------------------------------------------------------------
Установил error_log в режим info:
2016/05/26 12:15:51 [notice] 11221#0: using the "epoll" event method
2016/05/26 12:15:51 [notice] 11221#0: nginx/1.4.2
2016/05/26 12:15:51 [notice] 11221#0: built by gcc 4.4.7 20120313 (Red Hat
4.4.7-3) (GCC)
2016/05/26 12:15:51 [notice] 11221#0: OS: Linux 2.6.32-504.12.2.el6.x86_64
2016/05/26 12:15:51 [notice] 11221#0: getrlimit(RLIMIT_NOFILE): 2048:4096
2016/05/26 12:15:51 [notice] 11222#0: start worker processes
2016/05/26 12:15:51 [notice] 11222#0: start worker process 11224
2016/05/26 12:15:51 [notice] 11222#0: start worker process 11225
2016/05/26 12:15:51 [notice] 11222#0: start worker process 11226
2016/05/26 12:15:51 [notice] 11222#0: start cache manager process 11227
2016/05/26 12:15:51 [notice] 11222#0: start cache loader process 11228
2016/05/26 12:16:51 [notice] 11228#0: http file cache: /var/cache/nginx/ftl
0.055M, bsize: 4096
2016/05/26 12:16:51 [notice] 11228#0: http file cache:
/var/cache/nginx/systemConfig 0.008M, bsize: 4096
2016/05/26 12:16:51 [notice] 11228#0: http file cache:
/var/cache/nginx/banners 0.000M, bsize: 4096
2016/05/26 12:16:51 [notice] 11228#0: http file cache: /dev/shm/screenshots
0.000M, bsize: 4096
2016/05/26 12:16:51 [notice] 11222#0: signal 17 (SIGCHLD) received
2016/05/26 12:16:51 [notice] 11222#0: cache loader process 11228 exited with
code 0
2016/05/26 12:16:51 [notice] 11222#0: signal 29 (SIGIO) received
2016/05/26 12:20:35 [error] 11224#0: *1 upstream timed out (110: Connection
timed out) while connecting to upstream, client: 172.16.11.46, server:
10.197.162.35, request: "GET /url1?rnd=0.9631175188545227 HTTP/1.1",
upstream: "memcached://10.197.162.35:11211", host: "172.20.1.240", referrer:
"http://172.20.1.240/url2"
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,267049,267159#msg-267159
Подробная информация о списке рассылки nginx-ru