Unicorn Rails — загружает ЦП на 100% при запуске в рабочем режиме.

Мы используем Unicorn_Rails + nginx. Он хорошо работает в режиме разработки и в режиме производства в моей системе (4 ГБ оперативной памяти, процессор Intel (R) Core (TM) 2 Duo P8600 @ 2,40 ГГц). Я могу запустить 10 рабочих в локальной системе, но не могу запустить более 2 в в любом случае в производстве иногда это работает, но нужно подождать 15-20 мтс. При запуске unicorn_rails все время занимает 99,6% ЦП.

Процессор Intel(R) Xeon(R) E5507 @ 2,27 ГГц, но он зависает в Amazon (экземпляр m1.small) 1,73 ГБ ОЗУ

я нигде не нахожу, чтобы кто-нибудь говорил о медленном запуске с использованием unicorn_rails...


person Krishna Prasad Varma    schedule 09.08.2011    source источник
comment
ты понял это? у меня та же проблема.   -  person Morten    schedule 27.07.2012


Ответы (1)


Запуск Rails привязан к ЦП, он (почти) всегда будет использовать 100% ЦП все время. Похоже, нагрузка, которую вы пытаетесь возложить на этот экземпляр, слишком велика; вам нужен только 1 воркер на ядро ​​ЦП, а у m1.small только один.

Когда вы пытаетесь запустить 10 рабочих процессов, они совместно используют ЦП и ввод-вывод, а большое количество запросов ввода-вывода всегда замедляет работу подсистемы. Вы можете добавить пункт preload_app true в свой config/unicorn.rb; это должно сократить время запуска, но вам действительно не нужно 10 рабочих для такого экземпляра.

person whitequark    schedule 09.08.2011
comment
спасибо за немедленный ответ. мне это просто нравится .. обязательно попробую с preload_app true . Кстати, у меня есть только 1 рабочий, настроенный в файле unicorn.rb conf. - person Krishna Prasad Varma; 09.08.2011
comment
то это странно. Экземпляры Amazon не очень мощные, но запуск Rails определенно не должен занимать 15 минут — черт возьми, на моем старом Pentium III достаточно 1,5 минут! (кстати, preload_app ничего не изменит, если у вас только 1 воркер). Попробуйте запустить его через strace -f (без демонизации) и проверьте, не занимают ли некоторые системные вызовы намного больше времени, чем ожидалось. - person whitequark; 09.08.2011
comment
я даю -D (демонизировать) это занимает бесконечное время. но когда я запускаю его без -D, он работает хотя бы через 5-10 мтс. и я выхожу из терминала для сеанса .. ГРУСТНО !!!! - person Krishna Prasad Varma; 14.08.2011
comment
начните с меньшего количества рабочих процессов, которые вы всегда можете добавить в пул рабочих процессов на лету с помощью kill -TTIN ‹идентификатор процесса› - person engineerDave; 15.03.2013
comment
1 вещь, которую я заметил: если вы укажете неправильное имя базы данных, то каждый рабочий-единорог будет пытаться подключить базу данных, которой нет, и в этом случае это занимает 100% ЦП. - person sagar junnarkar; 19.03.2014