我已经在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而不是standrd 2e9会解决问题(我也试过750000000和500000000),但没有任何帮助(当然我每次更改后重新启动服务opencpu)。 我也认为这不是问题,因为我猜服务器会在操作使用多个GB时使用虚拟内存。 我认为这个问题与RAppArmor有关。所以我试图禁用它并重新启动opencpu,但问题并没有消失:
$ sudo aa-disable usr.bin.r 禁用/etc/apparmor.d/usr.bin.r。 Traceback(最近一次调用最后一次): 文件" / usr / sbin / aa-disable",第30行,in tool.cmd_disable() 文件" /usr/lib/python3/dist-packages/apparmor/tools.py",第148行,cmd_disable 提升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 =(未设置), LC_ALL =(未设置), LC_CTYPE =" UTF-8", LANG =(未设置) 支持并安装在您的系统上。 perl:警告:回退到标准语言环境(" C")。 locale:无法将LC_CTYPE设置为默认语言环境:没有此类文件或目录 locale:无法将LC_ALL设置为默认语言环境:没有此类文件或目录 选择以前未选择的包r-cran-rapparmor。
还有这一个:
警告:无法在/ proc / mounts中找到合适的fs,是否已挂载?\ n使用--subdomainfs来覆盖。\ n
提前致谢!
答案 0 :(得分:0)
看起来您的新托管服务提供商使用某种虚拟化系统,该系统具有共享内核,该内核限制了所有类型的Linux功能,包括rlimit,iptables和apparmor。是真正的云主机,还是你自己设置的东西?
在R(opencpu之外)中调试它会很有帮助。在服务器上,在控制台中启动R并键入:
library(RAppArmor, lib="/usr/lib/opencpu/library")
rlimit_as(1e9)
rlimit_fsize(1e9)
rlimit_cpu(1e5)