最近在着手做公司的聊天室,先说说目前的架构.
nginx 通过 ip_hash分配到不同的node端口
2台服务器用pm2 开启cluster模式启动8080-80034个端口监听,总共8个node实例运行
node用express框架+socket.io完成
实际生产环境测试的时候,发现因为使用nginx的ip_hash其实分配到每个node的实例都不均匀,大概只有2w个socket.io的连接.(补充一下为什么使用nginx的ip_hash是因为socket.io的socket连续必须保持一个连接一直连着某个进程的作用.)
通过pm2-web查看每个node的压力8个进程里面6个进程的cpu压力都是10%+,但有某1-2个进程就会100%满载.然后但个node进程的内存不断上升到了1G+左右就自动重启了.
本人刚接触node不太了解优化方案.万望大神们支下招.谢谢
大概有了解决办法了.
nginx不能用ip_hash.需要自己手动编译nginx sticky 模块然后加上pm2的多进程管理..现在测试用的机器两台3个node进程测试能顶多少人