gpt4 book ai didi

r - shelljs 执行在 DigitalOcean 上卡住

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:31 37 4
gpt4 key购买 nike

我有一个托管在 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/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com