Я запускаю приложение Rails 3.2 с довольно высоким трафиком на Unicorn и Nginx (несколько веб-узлов), но время от времени я вижу, что рабочие Unicorn начинают тайм-аут и получают сигкиллинг мастером Unicorn на всех узлах. Конечно, когда Unicorn worker сигкилится мастером Unicorn, на его место разветвляется новый worker, но он также просто зависает на 60 секунд, затем истекает время ожидания и его убивают. В основном это происходит неоднократно, пока я не убью всех мастеров и рабочих единорогов.
Unicorn log:
E, [2013-04-18T12:57:50.007623 #14002] ERROR -- : worker=8 PID:14968 timeout (62s > 60s), killing
E, [2013-04-18T12:57:50.108364 #14002] ERROR -- : reaped #<Process::Status: pid 14968 SIGKILL (signal 9)> worker=8
I, [2013-04-18T12:57:50.489505 #15726] INFO -- : worker=8 ready
E, [2013-04-18T12:57:52.175842 #14002] ERROR -- : worker=5 PID:15033 timeout (61s > 60s), killing
E, [2013-04-18T12:57:52.276586 #14002] ERROR -- : reaped #<Process::Status: pid 15033 SIGKILL (signal 9)> worker=5
I, [2013-04-18T12:57:52.653069 #15782] INFO -- : worker=5 ready
E, [2013-04-18T12:57:56.340290 #14002] ERROR -- : worker=3 PID:15074 timeout (61s > 60s), killing
E, [2013-04-18T12:57:56.440993 #14002] ERROR -- : reaped #<Process::Status: pid 15074 SIGKILL (signal 9)> worker=3
I, [2013-04-18T12:57:56.809730 #15832] INFO -- : worker=3 ready
E, [2013-04-18T12:57:57.504142 #14002] ERROR -- : worker=7 PID:15087 timeout (61s > 60s), killing
E, [2013-04-18T12:57:57.604886 #14002] ERROR -- : reaped #<Process::Status: pid 15087 SIGKILL (signal 9)> worker=7
I, [2013-04-18T12:57:57.983581 #15845] INFO -- : worker=7 ready
E, [2013-04-18T12:57:59.669664 #14002] ERROR -- : worker=4 PID:15108 timeout (61s > 60s), killing
E, [2013-04-18T12:57:59.770427 #14002] ERROR -- : reaped #<Process::Status: pid 15108 SIGKILL (signal 9)> worker=4
I, [2013-04-18T12:58:00.155461 #15879] INFO -- : worker=4 ready
E, [2013-04-18T12:58:06.839906 #14002] ERROR -- : worker=9 PID:15192 timeout (61s > 60s), killing
E, [2013-04-18T12:58:06.940829 #14002] ERROR -- : reaped #<Process::Status: pid 15192 SIGKILL (signal 9)> worker=9
I, [2013-04-18T12:58:07.302766 #15956] INFO -- : worker=9 ready
E, [2013-04-18T12:58:08.003330 #14002] ERROR -- : worker=6 PID:15213 timeout (61s > 60s), killing
E, [2013-04-18T12:58:08.104006 #14002] ERROR -- : reaped #<Process::Status: pid 15213 SIGKILL (signal 9)> worker=6
I, [2013-04-18T12:58:08.466790 #15973] INFO -- : worker=6 ready
Системы мониторинга показывают, что внешние службы (база данных Postgres, Memcached, Redis) отвечают правильно и без проблем с задержкой.
Вот некоторые выводы, которые могут быть полезны:
Во время этих отключений я замечаю огромное количество попыток подключения к сокету Unicorn. Когда сайт не работает, обычно следующая команда возвращает только одну или две строки.
netstat | grep unic
....
unix 2 [ ] STREAM CONNECTING 0 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTING 0 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTING 0 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTING 0 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTING 0 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7768134 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7767311 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7766999 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7767309 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7766941 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7767287 /tmp/unicorn.sock
unix 2 [ ] STREAM CONNECTED 7766225 /tmp/unicorn.sock
Кто-нибудь знает, что может быть причиной этого? Это происходит на нескольких серверах одновременно.