Вопрос

I use the awesome pm2 package to keep my node.js apps alive, but i have an issue I don't know how to fix.

One of my apps requires several scripts, a server and a few clients. Often when I restart my server, all the script are restarted, but connection isn't established because the clients have loaded before the server. Is it possible to make sure that a script starts after the other have loaded? Let me try to rephrase so it gets clearer

I have :

pm2 start server.js
pm2 start client.js

And I'd like to somehow start the client only when the server is started.

Apologies is my question seems unclear, please comment and I'll explain more!

Это было полезно?

Решение 2

Rewrite your client to make several connection attempts. It is always a good thing to do, and it'll also help in this case.

Другие советы

Run Pm2 using this script

pm2 start node <start script> --restart-delay <time in milliseconds>

Check the pm2 restart strategies

You can have either the option restart-delay

You can also use the restart_delay to set a fixed timing between restarts

Or preferably you may use exp-backoff-restart-delay

Instead of restarting your application like crazy when exceptions happens (e.g. database is down), the exponential backoff restart will increase incrementaly the time between restarts, reducing the pressure on your DB or your external provider.

You can either use it command line

pm2 start app.js --exp-backoff-restart-delay=100

or in json format on file or via ecosystem.config.js file:

module.exports = [{
  script: 'app.js',
  exp_backoff_restart_delay: 100
}]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top