2015-09-01 2 views
3

J'ai une application Node.JS qui permet d'accéder à une base de données MySQL, quelques requêtes HTTP, enregistre la réponse CSV dans un fichier, lit le même fichier et écrit sur Cassandra. Je l'utilise sur Ubuntu 14.04 et j'utilise Express, pour exposer une API web qui fait toutes les tâches ci-dessus.Script NodeJS tué par SIGKILL en cours d'exécution sur Forever

J'ai une autre application écrite dans Node.JS qui appelle l'API pour 200 utilisateurs. Comme c'est Node.JS, les appels sont asynchrones.

je lance l'application Express à l'aide:

node index.js 

Quand je lance l'autre script, qui frappe l'API Express, le script fonctionne très bien pour 200 utilisateurs avec une réponse:

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

Lorsque j'exécute la même application Express à l'aide de Forever:

forever start -w index.js 

puis exécutez le Cron Script pour 200 utilisateurs, je reçois

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

et quand j'ouvre le fichier journal, ce que je trouve:

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

Maintenant que l'App fonctionne bien en cours d'exécution au premier plan et est tué en cours d'exécution en arrière-plan, doit-il faire quelque chose sur la quantité de ressources allouées à un processus de démon?

Dois-je augmenter mon serveur? Ou est-il possible d'allouer plus de ressources à l'application Express?

+0

Avez-vous essayé d'exécuter 'forever' sans le drapeau' -w'? – robertklep

+0

Je l'ai fait, mais le même résultat. Je tirais constamment du nouveau code de bit bucket vers ce dépôt, d'où le drapeau -w. – vnay92

+0

J'ai compris! J'ai dû ajouter un dossier dans .foreverignore – vnay92

Répondre

3

Semble que vous avez un problème avec la modification de fichiers ou d'attributs de fichier via l'extraction d'un nouveau code.

essayer de configurer .foreverignore pour les sous-répertoires cachés, comme décrit ici

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

Si vous ne pouvez pas ignorer ou arrêter la mise à jour que les fichiers que vous devez cesser d'utiliser toujours pour regarder les mises à jour de fichiers

Je peux recommander http://supervisord.org/ pour exécuter l'application nodejs sur les machines Linux

+0

Puis-je explicitement allouer des ressources dans forever lui-même? Ce peut être un problème de mémoire. – vnay92

+0

Que voulez-vous dire? Je pense qu'il ne s'agit pas de ressources, pour toujours redémarré en regardant les changements de fichiers et c'est le cas. Vous verrez ENOMEM ou alors des erreurs en cas de mémoire insuffisante. Quoi qu'il en soit, tout ce que vous pouvez faire avec les ressources - changer 'ulimit', mais il s'agit de descripteurs, sockets – vmkcom

+0

d'accord. Je vais l'essayer. – vnay92