nginx & OOM killer & vm.overcommit_memory
Eugene Batogov
johnbat26 на gmail.com
Чт Янв 27 16:36:09 MSK 2011
Привет всем.
Вчера случилось следующая проблема.
Есть nginx, memcached и jboss.
Поставили comet.
Все лимиты установлены правильно.
После достижения 50000 соединений ядро Linux неожиданно
убило без суда и следствия memcached и jboss.
Ни логов, ничего нет.
Позже выяснилось, что это OOM Killer.
Памяти на сервере 8Гб.
Её было достаточно, + целый swap не использовался.
------------
Почитал тут о OOM killer:
http://catap.ru/blog/2009/05/03/about-memory-oom-killer/
есть следующие настройки ядра для этого:
- самый простой способ повлиять на OOM Killer -- использовать
vm.overcommit_memory<http://catap.ru/blog/2009/05/05/about-memory-overcommit-memory/>
;
У нас по умолчанию стоят:
- /proc/sys/vm/overcommit_memory - 0
- /proc/sys/vm/overcommit_ratio - 50
- vm.oom_dump_tasks -- делать dump всех процессов за исключением kernel
threads, в dump попадает pid, uid, tgid, vm size, rss, cpu и oom_adj. Имеет
смысл включать только для отладки OOM Killer;
- vm.oom_kill_allocating_task -- убивать процесс, процесс которому не
хватило памяти, без выбора самого плохого;
- vm.panic_on_oom -- считать запуск OOM критической ошибкой.
У кого какие параметры стоят?
Кто что порекоммендует? Как избежать внезапных падений из-за большого
количества открытых соединений?
--
Best Regards, Eugene Batogov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20110127/1cc1a3fe/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru