"nginx worker"-ы в таблице процессов
April 13, 2011 07:16AM
Вкратце опишу ситуацию:
Имеем несколько nginx-ов, запущенных под юзерм "ddd":

ddd@devel:~/devel/project$ ps ux | grep nginx
ddd 8552 0.0 0.0 27796 1000 ? Ss 14:31 0:00 nginx: master process /opt/nginx/sbin/nginx -c /home/ddd/devel/project/conf/nginx.conf
ddd 8553 0.0 0.0 29392 2608 ? S 14:31 0:00 nginx: worker process
ddd 16129 0.0 0.0 47624 5568 ? S Mar22 0:00 nginx: worker process
ddd 18603 0.0 0.0 28396 1016 ? Ss Apr06 0:00 nginx: master process /opt/nginx/sbin/nginx -c /home/ddd/devel/project2/conf/nginx.conf
ddd 18604 0.0 0.0 29672 3312 ? S Apr06 0:00 nginx: worker process
ddd 27312 0.0 0.0 47608 3460 ? Ss Mar17 0:00 nginx: master process /opt/nginx/sbin/nginx
ddd 31676 0.0 0.0 27796 1000 ? Ss 12:47 0:00 nginx: master process /opt/nginx/sbin/nginx -c /home/ddd/devel/project3/conf/nginx.conf
ddd 31677 0.0 0.0 28236 1872 ? S 12:47 0:00 nginx: worker process
ddd 13738 0.0 0.0 7340 872 pts/41 R+ 14:38 0:00 grep --color=auto nginx

Жестко убъем один из мастеров:
ddd@devel:~/devel/project$ kill -9 8552

Видим, что воркер этого мастера остался висеть в списке процессов (pid 8553):
ddd@devel:~/devel/project$ ps ux | grep nginx
ddd 8553 0.0 0.0 29392 2608 ? S 14:31 0:00 nginx: worker process
ddd 16129 0.0 0.0 47624 5568 ? S Mar22 0:00 nginx: worker process
ddd 18603 0.0 0.0 28396 1016 ? Ss Apr06 0:00 nginx: master process /opt/nginx/sbin/nginx -c /home/ddd/devel/project2/conf/nginx.conf
ddd 18604 0.0 0.0 29672 3312 ? S Apr06 0:00 nginx: worker process
ddd 27312 0.0 0.0 47608 3460 ? Ss Mar17 0:00 nginx: master process /opt/nginx/sbin/nginx
ddd 31676 0.0 0.0 27796 1000 ? Ss 12:47 0:00 nginx: master process /opt/nginx/sbin/nginx -c /home/ddd/devel/project3/conf/nginx.conf
ddd 31677 0.0 0.0 28236 1872 ? S 12:47 0:00 nginx: worker process
ddd 13738 0.0 0.0 7340 872 pts/41 R+ 14:38 0:00 grep --color=auto nginx

Он мешает запуску нджинкса:
ddd@devel:~/devel/project$ /opt/nginx/sbin/nginx -c /home/ddd/devel/project/conf/nginx.conf
[emerg]: bind() to 127.0.20.1:8080 failed (98: Address already in use)
[emerg]: bind() to 127.0.20.1:8081 failed (98: Address already in use)
...

Теперь приходится напрягаться и угадывать какой из "nginx: worker process" относился к убитому мастеру.

Если угадаем, то все будет ОК:
ddd@devel:~/devel/project$ kill -9 8553
ddd@devel:~/devel/project$ /opt/nginx/sbin/nginx -c /home/ddd/devel/project/conf/nginx.conf
ddd@devel:~/devel/project$

А если нет? Может, если нет возможности заставлять воркера делать суицид в подобной ситуации, хотя бы прописывать воркеру такой же "-с /path/to/config", чтобы дать возможность человеку определить какой воркер из этого месива к какому мастеру относится?
Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 293
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