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

时间:2016-11-18 07:27:09

标签: r curl opencpu

我试图使用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个随机正常样本的时间不到半秒:

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

为什么相对简单的flexsurv调用需要花费更多时间?预载不起作用吗?如果是这样,我该如何解决这个问题呢?如果不是,导致额外延迟的原因是什么?

非常感谢任何帮助...

1 个答案:

答案 0 :(得分:0)

通过使用opencpu的云版本解决了问题,这可以从预加载中获得更大的好处。

步骤:

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

  2. 安装docker for mac
  3. 安装opencpu docker container docker pull opencpu/base

  4. 使用终端会话docker run -t -i -p 80:80 -p 8004:8004 opencpu/base sh -c 'service opencpu restart && /bin/bash'
  5. 运行docker
  6. 从docker容器调用R,根据需要安装包
  7. 使用apt-get将所选文本编辑器安装到docker容器(例如sudo apt-get nano
  8. 使用文本编辑器编辑/etc/opencpu/server.conf并添加必要的包以进行预加载。
  9. 退出终端并按照此处的说明提交新图片
  10. 重新启动docker并启动docker run -t -p 80:80 -p 8004:8004 <your image name>
  11. Opencpu现已启动并运行,调用预加载的包将返回更快。
  12. 得到答案属于opencpu开发人员Jeroen Ooms谁帮助我加入了谷歌小组:https://groups.google.com/forum/#!topic/opencpu/D49Adx6GSiE