【问题标题】:Opencpu call takes longer than expectedOpencpu 调用花费的时间比预期的要长
【发布时间】:2016-11-18 07:27:09
【问题描述】:

我正在尝试使用 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 调用要花这么多时间?预加载不工作?如果是这样,我该如何解决这个问题?如果不是,是什么导致了额外的延迟?

非常感谢任何帮助...

【问题讨论】:

    标签: r curl opencpu


    【解决方案1】:

    通过使用云版本的 opencpu 解决了这个问题,它从预加载中看到了更大的好处。

    步骤:

    1. https://docs.docker.com/engine/installation/mac/安装docker for mac

    2. 安装opencpu docker容器docker pull opencpu/base

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

    回答的功劳归于 opencpu 开发人员 Jeroen Ooms,他在 google 小组中为我提供了帮助:https://groups.google.com/forum/#!topic/opencpu/D49Adx6GSiE

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      相关资源
      最近更新 更多