【发布时间】:2017-11-21 17:42:06
【问题描述】:
R 比其他任何东西都更需要 CPU,因此建议选择新一代计算优化实例类型之一,最好使用 SSD 磁盘。
我最近在负载测试期间遇到了内存使用率高(迅速提高到 100%)的问题。重现:有一个 R 包,其处理时间在无应力条件下高达 0.2。如果我尝试使用 curl 在 3 台机器上并行查询 1000 个 json 的端点之一,所有内存都会突然被使用,这会导致“无法分叉”或:
cannot popen '/usr/bin/which 'uname' 2>/dev/null', probable reason 'Cannot allocate memory' In call: system(paste(which, shQuote(names[i])), intern = TRUE, ignore.stderr = TRUE)
设置是 2 台 AWS 8GB CPU 优化服务器 + 负载均衡器,全部位于专用网络中。 HTTPS 已启用,我的主要用途是在线处理请求,所以我主要查询/json 端点。
您对如何解决这个问题有什么建议吗?计划是安装更多的包(更多的在线进程请求各种功能的结果),并且不希望最终每个盒子有 32GB 的 RAM。
所有的包都部署了这样的选项:
LazyData: false
LazyLoad: false
它们也被添加到serverconf.yml.j2 - 预加载部分。
RData 文件通过调用utils::data 在onLoad 函数中加载。
另外,请记住,我使用的是没有 github 的 OpenCPU,并且只有单向通信(从后端到 ocpu 框),您建议打开/优化哪些选项?文档中还没有明确说明。
【问题讨论】: