r - shelljs 执行在 DigitalOcean 上卡住

标签 r node.js digital-ocean shelljs seurat

我有一个托管在 DigitalOcean (Ubuntu 16.04) 上的 React Web 应用。该应用程序在后端 (node) 上有一个由 shelljs 调用的 R 脚本(shCMD 命令调用R 脚本。它永远不会进入 exec 回调):

exec_full_analysis = shell.exec(shCMD, function(code, stdout, stderr) {
 if (code === 0) {
      console.log('Program output:', stdout);

      pdfService.drawChartsPDF(typeArr, analysisId, datasetArr, pairArr, filterArr);

      console.log('sendStatus 200')

      res.sendStatus(200);
    } else {
      console.log('Program stderr:', stderr);
      //res.sendStatus(500);
    }
  });

我正在使用foreverjs来启动服务器。它在 conda 环境中运行。因此,当脚本最初开始运行时,我看到 foreverjs 为我提供的正确日志输出(R 脚本正在运行),但很快日志输出就停止生成。浏览器中和 forever 日志输出中均不存在错误。服务器在我的 R 脚本中到达某个阶段并不知何故卡住了。有没有办法找出到底出了什么问题?你会推荐什么?本地一切都工作得很好。唯一可能不同的是 conda 环境,但我希望它会给出错误,但实际上没有。

Update

我查看了 /var/log/syslog 但没有看到 OOM 错误: https://www.digitalocean.com/community/questions/python-script-gets-killed

Update

这不是 foreverjs 的问题:运行简单的 node server.js 卡在 R 脚本中的同一位置。

脚本卡在Seurat - 包函数ScaleData中:

 seurat_object <- ScaleData(object = seurat_object, vars.to.regress = c("nUMI"))

输出如下:

ScaleData is running on non-normalized values. Recommended workflow is to run NormalizeData first. Regressing out: nUMI | | 0%

但是,当然,它在本地运行良好。在服务器上,它陷入了第二次 for 循环迭代,因此一次它在服务器上运行得很好,但第二次它失败了,就好像运行进程的时间有限一样设置为 DigitalOcean

Update

服务器是apache2。我切换到 nginx,现在服务器运行良好,它没有卡住,问题几乎已经解决,只是现在我收到 504 网关超时错误。

最佳答案

所以,我不知道为什么,但这是 apache2 服务器问题。我切换到 nginx,但随后出现 RAM 内存不足错误,我通过减少 R 脚本使用的内存量修复了该错误:

options(java.parameters = "-Xmx6000m")

这是-Xmx8000m。然后脚本在服务器上正确完成,但在客户端上我看到 504 网关超时错误,我通过在这里找到的解决方案修复了该错误:https://asdqwe.net/blog/solutions-504-gateway-timeout-nginx/

刚刚在 /etc/nginx/conf.d/timeout.conf 创建文件:

proxy_connect_timeout       3000;
proxy_send_timeout          3000;
proxy_read_timeout          3000;
send_timeout                3000;

之后它终于开始工作了

关于r - shelljs 执行在 DigitalOcean 上卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55409558/

相关文章:

r - 如何在 R 中将第一列指定为行名?

r - 负整数与正整数索引的时间效率

r - 在R getGEO上捕获异常

php - 密码重置后删除该用户的所有 session cookie

javascript - 使用node中的webpack作为commonjs模块使Kafka.js外部依赖

linux - 无法像 dokku 用户那样通过 ssh 进行身份验证

r - 使用 ggbiplot 在 R 中可视化具有大量变量的 PCA

node.js - 使用 nodejs 数据包发送数据包

javascript - 仅当预加载图像时, Canvas 才会出现 CORS 问题

node.js - Nginx + NodeJS 重定向到端口 80