重新加载 pm2 后,我会丢失存储在 Node.js 项目异步队列中的数据吗?
will I lose data stored in async queue in Node.js project after pm2 reload?
目前,我正在使用具有异步队列 运行 吨数据的实时 node.js 服务器。
如果我 运行 pm2 重新加载,我会丢失所有排队的数据吗?
我无法测试会发生什么,因为它是实时服务器。
期待听到您的体验!
回答:我相信你会丢失数据,因为存储数据的对象在进程重新启动时丢失了。
从 async's queue documentation 开始,队列是一个对象,然后被推送到内存中,因此如果重新启动相应的节点进程,与其关联的内存也会重新启动。
pm2 reload 本质上是重新启动,但优雅地保持至少一个进程运行以防止零停机时间。
来自关于 pm2 restart
与 pm2 reload
的细微差别的问题
,
With reload, pm2 restarts all processes one by one, always keeping at least one process running.
目前,我正在使用具有异步队列 运行 吨数据的实时 node.js 服务器。
如果我 运行 pm2 重新加载,我会丢失所有排队的数据吗?
我无法测试会发生什么,因为它是实时服务器。
期待听到您的体验!
回答:我相信你会丢失数据,因为存储数据的对象在进程重新启动时丢失了。
从 async's queue documentation 开始,队列是一个对象,然后被推送到内存中,因此如果重新启动相应的节点进程,与其关联的内存也会重新启动。
pm2 reload 本质上是重新启动,但优雅地保持至少一个进程运行以防止零停机时间。
来自关于 pm2 restart
与 pm2 reload
的细微差别的问题
With reload, pm2 restarts all processes one by one, always keeping at least one process running.