Скрипт NodeJS убит SIGKILL при работе на Forever

У меня есть приложение Node.JS, которое осуществляет доступ к базе данных MySQL, несколько HTTP-запросов, сохраняет ответ CSV в файл, читает тот же файл и записывает в Cassandra. Я запускаю его в Ubuntu 14.04 и использую Express, чтобы предоставить веб-API, который выполняет все вышеперечисленные задачи.

У меня есть другое приложение, написанное на Node.JS, которое вызывает API для 200 пользователей. Поскольку это Node.JS, вызовы асинхронные.

Я запускаю приложение Express, используя:

node index.js

Когда я запускаю другой скрипт, который обращается к Express API, скрипт работает нормально для 200 пользователей с ответом:

{"status":200,"message":"Got the data and saved to the DB"}

Когда я запускаю одно и то же приложение Express, используя Forever:

forever start -w index.js

а затем запустить cron Script для 200 пользователей, я получаю

err { [Error: socket hang up] code: 'ECONNRESET' }

и когда я открываю файл журнала, это то, что я нашел:

error: restarting script because add changed error: Forever detected script was killed by signal: SIGKILL error: Script restart attempt #5

Теперь, когда приложение работает нормально во время работы на переднем плане и останавливается во время работы в фоновом режиме, нужно ли ему что-то делать с тем, сколько ресурсов выделяется процессу демона?

Должен ли я запустить свой сервер? Или я могу выделить больше ресурсов для приложения Express?


person vnay92    schedule 01.09.2015    source источник
comment
Вы пытались запустить forever без флага -w?   -  person robertklep    schedule 01.09.2015
comment
Я делал, но тот же результат. Я постоянно загружал новый код из битового ведра в этот репозиторий, отсюда и флаг -w.   -  person vnay92    schedule 01.09.2015
comment
Понятно! Пришлось добавить папку в .foreverignore   -  person vnay92    schedule 01.09.2015
comment
Можете ли вы объяснить метод   -  person Ashwanth Madhav    schedule 18.03.2020


Ответы (1)


Похоже, у вас возникли проблемы с изменением файлов или атрибутов файлов путем извлечения нового кода.

попробуйте настроить .foreverignore для скрытых подкаталогов, как описано здесь

https://github.com/foreverjs/forever/issues/235

Если вы не можете игнорировать или перестать обновлять эти файлы, вам нужно навсегда прекратить их использование для просмотра обновлений файлов.

Я могу порекомендовать http://supervisord.org/ для запуска приложения nodejs на машинах Linux.

person vmkcom    schedule 01.09.2015
comment
Могу ли я явно выделить ресурсы внутри себя навсегда? Это может быть проблема с памятью. - person vnay92; 01.09.2015
comment
Что ты имеешь в виду? Я думаю дело не в ресурсах, вечно перезагружался сам наблюдая за изменениями файлов вот и все. Вы увидите ошибки ENOMEM или около того в случае нехватки памяти. Всё равно всё что можно сделать с ресурсами - изменить ulimit, но это про дескрипторы, сокеты - person vmkcom; 01.09.2015