OpenCPU — не удалось установить rlimit. ЭНОСИС

Я уже установил OpenCPU на сервер Ubuntu — Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64) — и все работало без проблем. Здесь я хочу сказать, что мне очень нравится этот API, и я очень благодарен за все усилия людей (я думаю, в основном Jeroen Ooms), работающих над ним. Сейчас снова установил, но уже на другом Сервере у другого провайдера. Это также сервер Ubuntu — Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-042stab093.4 x86_64) — и поэтому я ожидал, что он будет работать так же гладко, как и раньше. Но теперь у меня проблема. После установки и запуска службы я хотел проверить через браузер, все ли в порядке. Поэтому я просто открыл http://xxx.xxx.xxx.xxx/ocpu, как будто он работал на мой другой сервер. На этот раз мой браузер не показывает OpenCPU API Explorer, а показывает следующее сообщение:

Failed to set rlimit. ENOSYS

In call:
rlimit_wrapper("rlimit_as", hardlim, softlim, pid, verbose)

На сервере всего 1 ГБ физической памяти, поэтому я думал, что изменение "rlimit.as" на 1e9 вместо стандартного 2e9 исправит проблему (я также пробовал 750000000 и 500000000), но ничего не помогло (конечно, я перезапустил службу opencpu снова после каждого изменения). Я также думаю, что это не проблема, потому что я предполагаю, что сервер будет использовать виртуальную память, когда операция использует более одного ГБ. Я думаю, что проблема связана с RAppArmor. Поэтому я попытался отключить его и перезапустить opencpu, но проблема не исчезла:

$ sudo aa-disable usr.bin.r Отключение /etc/apparmor.d/usr.bin.r. Трассировка (последний последний вызов): Файл "/usr/sbin/aa-disable", строка 30, в tool.cmd_disable() Файл "/usr/lib/python3/dist-packages/apparmor/tools.py", строка 148, в cmd_disable поднять apparmor.AppArmorException(cmd_info[1]) apparmor.common.AppArmorException: 'Предупреждение: невозможно найти подходящую fs в /proc/mounts, она смонтирована?\nИспользуйте --subdomainfs для переопределения.\n'

Итак, кто-нибудь знает, в чем здесь может быть проблема, или есть какие-либо предложения, где искать решение (я уже пытался гуглить, но ничего полезного не нашел)?

Я не думаю, что что-либо из следующего является причиной проблемы, но, поскольку я не уверен, я все равно добавляю эти предупреждения:

Единственной странной вещью, с которой я столкнулся во время установки OpenCPU, было это сообщение (которое появлялось 4 раза):

iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

Но потом сказал:

 * Reloading nginx configuration nginx          [ OK ]
OK
Setting up opencpu (1.4.4-trusty15) ...

Также, когда я попытался установить RAppArmor отдельно, я получил следующее предупреждение:

perl: предупреждение: Пожалуйста, убедитесь, что ваши настройки локали: LANGUAGE = (не задано), LC_ALL = (не задано), LC_CTYPE = "UTF-8", LANG = (не задано) поддерживаются и установлены в вашей системе. perl: предупреждение: возврат к стандартной локали ("C"). локаль: Невозможно установить LC_CTYPE в качестве локали по умолчанию: Нет такого файла или каталога локаль: Невозможно установить LC_ALL в качестве локали по умолчанию: Нет такого файла или каталога Выбор ранее невыбранного пакета r-cran-rapparmor.

А еще вот этот:

Предупреждение: не удалось найти подходящую fs в /proc/mounts, она смонтирована?\nИспользуйте --subdomainfs для переопределения.\n

Заранее спасибо!


person Stefan Winkelpicker    schedule 11.10.2014    source источник


Ответы (1)


Похоже, ваш новый хостинг-провайдер использует какую-то систему виртуализации с общим ядром, которое ограничивает все функции Linux, включая rlimit, iptables и, возможно, apparmor. Это настоящий облачный хост или что-то, что вы настраиваете самостоятельно?

Было бы полезно отладить это в R (вне opencpu). На вашем сервере запустите R в консоли и введите:

library(RAppArmor, lib="/usr/lib/opencpu/library")
rlimit_as(1e9)
rlimit_fsize(1e9)
rlimit_cpu(1e5)
person Jeroen    schedule 13.10.2014
comment
Jeroen, спасибо за быстрый ответ, вы потрясающие! Вы правы, наш хостинг-провайдер использует какую-то виртуализацию с общим ядром. После полного удаления AppArmor и переустановки OpenCPU теперь все работает. Но я не уверен, с какими опасностями мы сталкиваемся сейчас, когда OpenCPU работает без AppArmor. Можем ли мы что-нибудь сделать, чтобы снизить риски? Не могли бы вы указать мне ресурсы, где я могу узнать больше об этой проблеме? - person Stefan Winkelpicker; 14.10.2014
comment
Вы, вероятно, не должны выставлять свой сервер миру без безопасности. Но для внутреннего употребления вполне годится. Знаете ли вы, какую виртуальную среду использует ваш хост? Почти все современные хостинг-провайдеры в наши дни используют kvm, xen или openstack, ни один из которых не использует общее ядро. - person Jeroen; 14.10.2014