Запуск Erlang приложения из-под Supervisord

56 views
Skip to first unread message

Denis Volokh

unread,
May 31, 2015, 12:26:11 PM5/31/15
to erlang-i...@googlegroups.com
Коллеги, задался таким вопросом как запустить erlang приложение через supervisord. 

У меня есть релиз erlang приложения, я конечно же могу запустить его демоном из командной строки, 
но хотелось бы настроить отдельную программу в supervisord, так как там уже собраны остальные процессы системы. 

Может кто-то сталкивался?

Сергій Костюшкін

unread,
Jun 1, 2015, 8:15:42 AM6/1/15
to erlang-i...@googlegroups.com, barma...@gmail.com
У эрланга есть встроеный подобный механизм:

http://www.erlang.org/doc/man/heart.html

Соответственно маловероятно чтобы кто-то такое практиковал.


неділя, 31 травня 2015 р. 19:26:11 UTC+3 користувач Denis Volokh написав:

Alexey Kishkin

unread,
Jun 2, 2015, 6:38:14 AM6/2/15
to erlang-i...@googlegroups.com, barma...@gmail.com
heart имеет серьезные проблемы, supervisord вполне разумное решение. 

Насколько я помню  для supervisord надо просто чтобы программа не демонизировала себя. В случае релизов, созданных ребаром стандартный скрипт запуска имет команду foreground чтобы запустить в таком режиме.



понедельник, 1 июня 2015 г., 15:15:42 UTC+3 пользователь Сергій Костюшкін написал:

Сергій Костюшкін

unread,
Jun 2, 2015, 6:53:31 AM6/2/15
to erlang-i...@googlegroups.com, aleksey...@gmail.com, barma...@gmail.com
Я не использую heart, так как считаю что ситуация когда продакшн приложение крашится, тем более написаное на Erlang это ситуация сама по себе недопустимая, но мне все же инстересно, какие недостатки у heart?

вівторок, 2 червня 2015 р. 13:38:14 UTC+3 користувач Alexey Kishkin написав:

Alexey Kishkin

unread,
Jun 2, 2015, 9:52:00 AM6/2/15
to erlang-i...@googlegroups.com, aleksey...@gmail.com, barma...@gmail.com
Плохо обрабатывается переполнение памяти прложением..

Когда срабатывает OOM killer у linux kernel , heart убивается одномоментно вместе с приложением. Они с точки зрения kernel представляют собой родственные процессы, и kernel убивает их вместе. приложение, heart и порты. Так что ни heart не успевает перезапустить приложение, ни приложение перезапустить heart.

Поэтому думаешь что все в порядке, все перезапустится, а  среди ночи тебя будят и говорят сервис лежит уже полчаса. 

вторник, 2 июня 2015 г., 13:53:31 UTC+3 пользователь Сергій Костюшкін написал:

Сергій Костюшкін

unread,
Jun 2, 2015, 11:01:19 AM6/2/15
to erlang-i...@googlegroups.com, aleksey...@gmail.com, aleksey...@gmail.com
ок. Спасибо, будем знать.

вівторок, 2 червня 2015 р. 16:52:00 UTC+3 користувач Alexey Kishkin написав:

Alexey Radetsky

unread,
Jun 3, 2015, 3:08:17 AM6/3/15
to erlang-i...@googlegroups.com, aleksey...@gmail.com
У меня недавно был похожий случай, процесс память кушал как не в себя, вычитывая 500 тысяч CDR из базы. 
Видимо был несколько невнимателен, когда такое писал.  Но -heart такое выпасал и рестартовал VM. 
Переделал на рекурсию и потоковую отдачу данных cowboy-ю порциями по 1000 и сразу попустило.  
Не должно приложение жрать память до состояния вылета.  Уж тем более, когда не просто Can not allocate memory,  а убийца OOM. 


вівторок, 2 червня 2015 р. 16:52:00 UTC+3 користувач Alexey Kishkin написав:
Reply all
Reply to author
Forward
0 new messages