Случайные тайм-ауты и взмахи единорога

Я запускаю приложение 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

Кто-нибудь знает, что может быть причиной этого? Это происходит на нескольких серверах одновременно.


person Tyler    schedule 18.04.2013    source источник


Ответы (1)


ДДОС? Прежде чем исследовать уровень приложения, я хотел бы убедиться, что вы знаете, что происходит на сетевом уровне. Сколько соединений у вас есть, когда он работает? Сколько, когда это не так? С каких IP? и т.п.

person Idavod    schedule 18.04.2013