LINUX.ORG.RU

erlang, out of memory, точнее OOM killer


0

0

Как следует из статьи http://damienkatz.net/2008/03/what_sucks_abou.html да и простейшего теста, если эрланг не может получить требуемую память, он просто дохнет через OOM, вместо, хотя бы уж, вызова exception.

Учитывая особенности задачи которую я пишу, памяти мне понадобится много и такая ситуация у меня может случаться - может ли кто-либо посоветовать эффективный обход данной проблемы?

-module(memtest).
-export([test/0]).
-import(io).
-import(file).

test() -> testrun(0,[]).

testrun(Cnt,List) ->
{ok, A}=file:read_file("testfile"),
io:fwrite("testrun(~w)~n",[Cnt]),
testrun(Cnt+1,[A|List]).
★★★
Ответ на: комментарий от wfrr

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

(erlang это виртуальная машина с green-processes, то есть чаще всего это означает что на 4 физических ядрах компьютера крутится до млн процессов в понимании эрланга, логично было бы чтобы убивался конкретный процесс а не вся машина).

vahvarh ★★★
() автор топика
Ответ на: комментарий от vahvarh

не знаю, в сях просто не выделяется память, в яве вроде ничего не поделаешь (в плоть до фокусов - запускается gc и из-за этого вылетает OOMException)

wfrr ★★☆
()
Ответ на: комментарий от vahvarh

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

Ограничивай память процессу на уровне операционной системы. При выжирании квоты процессу прилетит сигнал.

mv ★★★★★
()
Ответ на: комментарий от arhibot

http://bhsql.vcity.ru/ - пока там мало, писать документации времени нет, но хоть что-то есть. :)

Вообще цель - транзакционная СУБД уровня oracle+timesten с репликацией из коробки и прочими вещами. целевая аудитория - ERP и хостинг.

vahvarh ★★★
() автор топика
Ответ на: комментарий от vahvarh

>Вообще цель - транзакционная СУБД уровня oracle+timesten

На эрланге? Я думал, он создавался всё-таки для реализации отказоустойчивых, а не числодробильных проектов. Или вы все на ffi посадить хотите, но тогда зачем эрланг?

anonymous
()

в man malloc см. BUGS и sysctl -a | grep overco

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.