лимит памяти opencpu/R

У меня странная проблема с opencpu. Я настраиваю веб-интерфейс для использования xcms (R-пакет), и при чтении файла mzxml с помощью веб-интерфейса я получаю сообщение об ошибке: невозможно выделить вектор размером 207,2 МБ. Это похоже на ошибку R, но если я открою R на сервере и попытаюсь открыть файл самостоятельно, он сработает, и R создаст объект размером 435 МБ. Где-то установлен лимит памяти (apache, opencpu, R)? Если я использую ulimit -a, максимальный размер памяти устанавливается равным неограниченному.

Привет, Рико


person ricoderks    schedule 29.11.2013    source источник
comment
Это действительно ошибка R, и это означает, что недостаточно оперативной памяти для выделения дополнительных 207 МБ. Имейте в виду, что R хранит все в оперативной памяти, а все операции над объектом требуют дополнительной памяти. Чтение данных и создание конечного объекта может потребовать (намного) больше памяти, чем окончательный размер объекта. Вы уверены, что используя свой веб-интерфейс, вы выполняли те же операции, что и при непосредственном использовании R?   -  person Roland    schedule 29.11.2013
comment
Привет, Роланд, да, я использую ту же библиотеку и ту же функцию (xcmsRaw). В обоих случаях я использую одни и те же параметры по умолчанию.   -  person ricoderks    schedule 29.11.2013
comment
Ну и сколько памяти использует ваш веб-интерфейс? Вам необходимо профилировать использование оперативной памяти.   -  person Roland    schedule 29.11.2013


Ответы (1)


Да, облачный сервер OpenCPU устанавливает ограничение памяти RLIMIT_AS для каждого запрос с использованием пакета RAppArmor. Это делается для того, чтобы один пользователь не потреблял все ресурсы на сервере. Ограничение по умолчанию составляет 1 ГБ на процесс. Вы можете настроить эти ограничения, отредактировав:

/etc/opencpu/server.conf

После редактирования файла перезапустите сервер:

sudo service opencpu restart

Для получения дополнительной информации о rlimits прочитайте статью JSS на RAppArmor.

person Jeroen    schedule 29.11.2013
comment
Привет Jeroen, спасибо, что сделали работу. Я также обновляю свою виртуальную машину до 64-битной системы. Коллеги, много работающие с XCMS, заметили, что с большими файлами mzxml R не может использовать достаточно памяти. Я также пытался профилировать использование памяти (как предложил @Roland), но не было большой разницы между простым использованием R или выполнением всего через веб-интерфейс. Я использовал для этого бесплатную и увидел, что все, что делается через веб-интерфейс, потребляет ок. 30Мб больше. Привет, РИКО - person ricoderks; 02.12.2013