r-OpenCPU-设置rlimit失败.ENOSYS



我已经在Ubuntu服务器上安装了OpenCPU——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资源管理器,但显示以下消息:

Failed to set rlimit. ENOSYS
In call:
rlimit_wrapper("rlimit_as", hardlim, softlim, pid, verbose)

服务器只有1GB的物理内存,所以我认为将"rlimit.as"更改为1e9而不是标准的2e9可以解决问题(我也尝试了750000000和500000000),但没有任何帮助(当然,每次更改后我都会重新启动服务opencpu)。我还认为这不是问题所在,因为我猜当一个操作使用超过一GB时,服务器会使用虚拟内存。我认为这个问题与RAppArmor有关。所以我尝试禁用它并重新启动opencpu,但问题并没有消失:

$sudo-aa禁用usr.bin.r正在禁用/etc/appermor.d/usr/bin.r。追踪(最近一次通话):文件"/usr/sbin/aa disable",第30行,位于tool.cmd_disable()cmd_disable中的文件"/usr/lib/python3/dist-packages/appermor/tools.py",第148行提高声望。AppArmorException(cmd_info[1])apparmor.common.AppArmorException:'警告:在/proc/mounts中找不到合适的fs,它已安装吗?\使用--要覆盖的子域。\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-apparmor。

还有这个:

警告:在/proc/mounts中找不到合适的fs,它已安装吗?\使用--要覆盖的子域。\n

提前感谢!

您的新托管提供商似乎使用了某种虚拟化系统,该系统具有共享内核,限制了所有类型的linux功能,包括rlimit、iptables,可能还有apparmor。是一个真正的云主机,还是你自己设置的?

在R(opencpu之外)中调试它会很有帮助。在服务器上,在控制台中启动R并键入:

library(RAppArmor, lib="/usr/lib/opencpu/library")
rlimit_as(1e9)
rlimit_fsize(1e9)
rlimit_cpu(1e5)

相关内容

  • 没有找到相关文章

最新更新