Shell.js执行被困在DigitalOcean上

时间:2019-03-29 02:11:34

标签: r node.js digital-ocean shelljs

我有一个pdist网络应用程序托管在smaller_xyReact)上。该应用在后端(DigitalOcean)上具有Ubuntu 16.04脚本,该脚本由R调用(node命令将调用shelljs脚本。它永远不会进入exec回调):

shCMD

我正在使用R启动服务器。它在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错误:https://www.digitalocean.com/community/questions/python-script-gets-killed

  

更新

/var/log/syslog没问题:在OOM脚本中,将简单的foreverjs卡在同一位置。

脚本卡在node server.js-包函数R中:

Seurat

具有以下输出:

  

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

但是,当然,它在本地运行良好。并且在服务器上,它陷入了第二个ScaleData循环迭代中,因此,它一次在服务器上运行得很好,但是第二次失败,好像运行在{ {1}}。

  

更新

服务器为 seurat_object <- ScaleData(object = seurat_object, vars.to.regress = c("nUMI")) 。我切换到for,现在服务器运行正常,没有卡住,问题几乎解决了,除了现在我遇到了DigitalOcean网关超时错误。

1 个答案:

答案 0 :(得分:0)

因此,我不知道为什么,但是这是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;

此后它终于开始工作