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 的云版本解决,预加载带来了更大的好处。
步骤:
为 mac 安装 docker
安装opencpu docker容器docker pull opencpu/base
- 运行 docker 带终端会话
docker run -t -i -p 80:80 -p 8004:8004 opencpu/base sh -c 'service opencpu restart && /bin/bash'
- 从 docker 容器调用 R,根据需要安装包
- 使用 apt-get 将选择的文本编辑器安装到 docker 容器(例如
sudo apt-get nano
)
- 使用文本编辑器编辑/etc/opencpu/server.conf 并添加必要的包进行预加载。
- 退出终端并按照此处的说明提交新图像
- 重新启动 docker 并启动
docker run -t -p 80:80 -p 8004:8004 <your image name>
- Opencpu 现已启动,运行 并且对预加载包的调用将 return 快得多。
感谢 opencpu 开发人员 Jeroen Ooms 的回答,他在 google 组中帮助了我:https://groups.google.com/forum/#!topic/opencpu/D49Adx6GSiE
我正在尝试使用 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 的云版本解决,预加载带来了更大的好处。
步骤:
- 为 mac 安装 docker
安装opencpu docker容器
docker pull opencpu/base
- 运行 docker 带终端会话
docker run -t -i -p 80:80 -p 8004:8004 opencpu/base sh -c 'service opencpu restart && /bin/bash'
- 从 docker 容器调用 R,根据需要安装包
- 使用 apt-get 将选择的文本编辑器安装到 docker 容器(例如
sudo apt-get nano
) - 使用文本编辑器编辑/etc/opencpu/server.conf 并添加必要的包进行预加载。
- 退出终端并按照此处的说明提交新图像
- 重新启动 docker 并启动
docker run -t -p 80:80 -p 8004:8004 <your image name>
- Opencpu 现已启动,运行 并且对预加载包的调用将 return 快得多。
感谢 opencpu 开发人员 Jeroen Ooms 的回答,他在 google 组中帮助了我:https://groups.google.com/forum/#!topic/opencpu/D49Adx6GSiE