Opencpu 调用花费的时间比预期的要长

Opencpu call takes longer than expected

我正在尝试使用 opencpu 从 flexsurv 包中调用一个函数。我在 OSX Sierra 上 运行。

我已经修改了我的 opencpu.conf 文件以将 flexsurv 包含在预加载包列表中:

{
"enable.api.library": true,
"enable.api.apps": true,
"enable.api.bioc": true,
"enable.api.cran": true,
"enable.api.gist": true,
"enable.api.github": true,
"enable.api.user": true,
"enable.api.tmp": true,
"enable.cors" : true,
"enable.post.code": true,
"error.showcall": true,
"gist.cache": 300,
"github.cache": 86400,
"cran.cache": 86400,
"public.url" : "https://public.opencpu.org/ocpu",
"smtp.server" : "localhost",
"httpcache.post": 300,
"httpcache.lib": 86400,
"httpcache.git": 900,
"httpcache.gitapi": 120,
"httpcache.tmp": 86400,
"httpcache.cran": 86400,
"httpcache.static": 31536000,
"httpcache.bioc": 31536000,
"key.length" : 9,
"appspaths": "/usr/local/lib/opencpu/apps-library",
"repos": "http://cran.rstudio.com",
"rlimit.as": 2e9,
"rlimit.fsize": 1e8,
"rlimit.nproc": 50,
"timelimit.get": 600,
"timelimit.post": 90,
"timelimit.webhook": 900,
"preload": ["ggplot2", "lattice","survival","flexsurv"]

}

然后我开始打开 ​​cpu 并在 curl 中进行以下调用:

curl localhost:7210/ocpu/library/flexsurv/R/pgompertz/json -d "q=[0,1,2,3]&shape=0.001&rate=0.001" -w "%{time_total}\n" -o /dev/null

这个调用大约需要 1.4 秒,尽管它是一个极其简单和快速的函数调用,应该不会花费任何时间。

相比之下,调用 rnorm 在不到半秒的时间内抽取 10,000 个随机正态样本returns:

curl localhost:7210/ocpu/library/stats/R/rnorm/json -d "n=100000" -w "%{time_total}\n" -o /dev/null 

为什么相对简单的flexsurv调用要花这么多时间?预加载不起作用?如果是这样,我该如何解决?如果不是,是什么导致了额外的延迟?

非常感谢任何帮助...

问题已通过使用 opencpu 的云版本解决,预加载带来了更大的好处。

步骤:

  1. https://docs.docker.com/engine/installation/mac/

  2. 为 mac 安装 docker
  3. 安装opencpu docker容器docker pull opencpu/base

  4. 运行 docker 带终端会话 docker run -t -i -p 80:80 -p 8004:8004 opencpu/base sh -c 'service opencpu restart && /bin/bash'
  5. 从 docker 容器调用 R,根据需要安装包
  6. 使用 apt-get 将选择的文本编辑器安装到 docker 容器(例如 sudo apt-get nano
  7. 使用文本编辑器编辑/etc/opencpu/server.conf 并添加必要的包进行预加载。
  8. 退出终端并按照此处的说明提交新图像
  9. 重新启动 docker 并启动 docker run -t -p 80:80 -p 8004:8004 <your image name>
  10. Opencpu 现已启动,运行 并且对预加载包的调用将 return 快得多。

感谢 opencpu 开发人员 Jeroen Ooms 的回答,他在 google 组中帮助了我:https://groups.google.com/forum/#!topic/opencpu/D49Adx6GSiE