У меня есть React
веб-приложение, размещенное на DigitalOcean
(Ubuntu 16.04
). В приложении имеется скрипт R
на сервере (node
), который вызывается shelljs
(команда 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
. Итак, когда скрипт запускается изначально, я вижу правильный вывод журнала (скрипт R
выполняется), который foreverjs
предоставляет мне, но очень быстро вывод журнала прекращается. Никаких ошибок ни в браузере, ни в логе forever
нет. Сервер достигает определенной стадии в моем скрипте R
и как-то застревает. Есть ли способ выяснить, что происходит не так? Чтобы вы посоветовали? Локально все работает просто отлично. Единственное, что может отличаться, это conda
окружение, но я ожидаю, что оно выдаст ошибку, но ее нет.
Обновление
Я посмотрел /var/log/syslog
, но не вижу OOM
ошибок: https://www.digitalocean.com/community/questions/python-script-gets-killed
Обновление
Это не проблема с foreverjs
: выполнение простого node server.js
застревает в том же месте в R
скрипте.
Скрипт застревает в Seurat
- функция пакета ScaleData
:
seurat_object <- ScaleData(object = seurat_object, vars.to.regress = c("nUMI"))
со следующим выводом:
ScaleData работает с ненормализованными значениями. Рекомендуемый рабочий процесс - сначала запустить NormalizeData.
Отступление: NUMI
| | 0%
Но, конечно, локально все работает хорошо. А на сервере он застревает во второй итерации for
-loop, поэтому один раз он просто отлично работает на сервере, но во второй раз происходит сбой, как будто есть ограниченное время для запуска процесса, установленного на DigitalOcean
.
Обновление
Сервер был apache2
. Я переключился на nginx
, и теперь сервер работает нормально, он не застревает, и проблема почти решена, за исключением того, что теперь я получаю 504
ошибки тайм-аута шлюза.