1

我已经在 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 Explorer,而是显示以下消息:

Failed to set rlimit. ENOSYS

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

服务器只有 1GB 的物理内存,所以我认为将“rlimit.as”更改为 1e9 而不是标准的 2e9 可以解决问题(我也尝试了 750000000 和 500000000),但没有任何帮助(当然我重新启动了服务 opencpu每次更改后再次)。我也认为这不是问题,因为我猜当操作使用超过 1 GB 时服务器会使用虚拟内存。我认为问题与 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 raise apparmor.AppArmorException(cmd_info[1]) apparmor.common.AppArmorException: '警告:无法在 /proc/mounts 中找到合适的 fs,是否已挂载?\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 = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = (unset) 是否支持并安装在您的系统上。perl:警告:回退到标准语言环境(“C”)。语言环境:无法将 LC_CTYPE 设置为默认语言环境:没有这样的文件或目录 语言环境:无法将 LC_ALL 设置为默认语言环境:没有这样的文件或目录 选择以前未选择的包 r-cran-rapparmor。

还有这个:

警告:在 /proc/mounts 中找不到合适的 fs,是否已安装?\n使用 --subdomainfs 覆盖。\n

提前致谢!

4

1 回答 1

0

看起来您的新托管服务提供商使用某种具有共享内核的虚拟化系统,该内核限制了所有类型的 linux 功能,包括 rlimit、iptables 和可能的 apparmor。是实际的云主机,还是您自己设置的东西?

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

library(RAppArmor, lib="/usr/lib/opencpu/library")
rlimit_as(1e9)
rlimit_fsize(1e9)
rlimit_cpu(1e5)
于 2014-10-13T14:27:33.420 回答