2017-01-16 2 views
0

Я работаю над веб-сайтом, основанным на expressjs, который передает видео и пользователи могут загружать с него видеофайлы.
Когда я запускаю приложение, все работает хорошо. Но через некоторое время приложение не может передавать потоки видео, и загрузка файлов также не работает (он возвращает пустой файл после долгой задержки), единственный способ исправить это - перезапустить приложение.Nodejs падает при чтении с диска

Nginx журнал ошибок:

2017/01/16 19:39:39 [error] 10584#10584: *23717 upstream prematurely closed connection while reading upstream, client: x.x.x.x, server: example.com, request: "GET /api/course/.../video/.../stream HTTP/1.1", upstream: "http://127.0.0.1:8080/api/course/.../video/.../stream", host: "example.com" 

Я использую PM2 в кластерном режиме.

У меня есть это приложение на наличие ошибок лесозаготовительных:

process.on('uncaughtException', function(err) { 
    console.log(err); 
    winston.error('Caught exception : ' ,err); 
}); 

Но нет ошибки в лог-файлах.

для потокового видео Я использую подход, похожий на this.
для загрузки файлов Я использую функцию экспресс-загрузки.

+0

Не могли бы вы пропустить файловые дескрипторы или какой-либо другой системный ресурс, и в итоге вы исчерпали? – jfriend00

ответ

0

Во-первых, проверьте файл winston daily rotate, у них есть транспорт для регистрации необработанных исключений. Во-вторых, если через некоторое время ваше приложение станет медленным, возможно, что у вас есть утечка памяти, потому что сбор мусора замедляет процесс или поток блокируется длинным синхронным кодом, это будет полезно, если вы покажете свой код здесь.

Смежные вопросы