1

我有一个React托管在DigitalOcean( Ubuntu 16.04) 上的网络应用程序。R该应用程序在后端 ( ) 上有一个脚本,nodeshelljs( shCMDcommand 调用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环境中运行。因此,当脚本最初开始运行时,我会看到正确的日志输出(R脚本正在运行),它foreverjs为我提供了但很快就会停止生成日志输出。forever浏览器和日志输出中都没有错误。服务器到达我的R脚本中的某个阶段并且以某种方式卡住了。有没有办法弄清楚出了什么问题?你会推荐什么?在本地,一切正常。唯一可能不同的是conda环境,但我希望它会给出错误但没有。

更新

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

更新

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

脚本卡在Seurat- 包函数中ScaleData

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

具有以下输出:

ScaleData 在非标准化值上运行。推荐的工作流程是首先运行 NormalizeData。回归:nUMI | | 0%

但是,当然,它在本地运行良好。并且在服务器上它卡在第二for次循环迭代中,所以一次它在服务器上运行得很好,但第二次它失败了,就好像运行一个进程设置的时间有限一样DigitalOcean

更新

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

4

1 回答 1

1

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

options(java.parameters = "-Xmx6000m")

它是-Xmx8000m。然后脚本在服务器上正确完成,但在客户端我看到504网关超时错误,我通过我在这里找到的解决方案修复:https ://asdqwe.n​​et/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;

之后它终于开始工作了

于 2019-03-29T05:06:30.030 回答