首页 > 解决方案 > Node.js 活动句柄突然上升

问题描述

我有一个托管在 DigitalOcean 上的移动应用程序(每天大约 100 个同时用户)Parse ServerNode.js+包装器。express应用服务器与托管在另一个 DigitalOcean 液滴上的 MongoDB 通信。我pm2用作流程管理器及其基于 Web 的监控工具。在同一个过程中,我们运行LiveQueryParse 社区制作的 WebSocket 服务器。

问题是,我在服务器上遇到了一些性能问题。一切顺利,直到主动手柄不受控制地升起!(见下图)这就像服务器说“我完成了!现在我休息了!”

通常活动句柄保持在 30 到 70 之间。当我重新启动进程时,pm2 restart一切都恢复正常!

我已经有这个问题很长一段时间了,我一直无法弄清楚是什么原因造成的!任何帮助将不胜感激!

在此处输入图像描述

编辑:我做了一个压力测试,我为 1 个用户创建了 200 个 LiveQuery 套接字,而不是用户通常拥有的 2 个,并且在 5 秒内出现了 300 个活动句柄的峰值!套接字全部创建的那一刻,一切恢复正常!

标签: node.jsparse-server

解决方案


我通常根据内存使用情况使用重启

pm2 start filename.js --max-memory-restart 160 --exp-backoff-restart-delay=100

pm2 还具有内置的 cron 作业或自动启动脚本设置,以防服务器重新启动,请参阅https://pm2.keymetrics.io/docs/usage/restart-strategies/

如果 pm2 将提供基于活动连接或堆内存的重启选项,那将是可能的


推荐阅读