Nodejs高性能服务架构:cluster模式+Nginx多进程模式
Nodejs和Nginx都是轻量级,高性能服务器的代表,而Nodejs站点的标准配置就是在Nodejs服务器上架一层Nginx反向代理,两种轻量级高性能的服务器组合在一起产生什么样的火花呢?往下看。
为什么要在Nodejs上加Nginx反向代理,原因归纳如下:
-
用Nginx来做静态资源的反向代理,减少Nodejs的压力;
-
Nginx自带日志功能,可以没必要Nodejs去处理这个问题了
-
Nginx用来做负载均衡,增加横向扩展性
-
假如一台服务器多个Nodejs站点,或则一个域名下挂多个站点或不同中语言的站点。有个反向代理都可以处理。
加了Nginx做反向代理是否对网站性能有影响?答案是有影响,但咱有方案:Nginx多进程+Nodejs Cluster
做个测试,那10000次连接,1000并发来测试。
在nodejs的fork模式的速度是
nginx 单进程+nodejs fork:基本看上去就慢很多了。
nginx 3进程+nodejs fork:这个跟不用反向代理的速度差不多
nodejs cluster(3)比fork模式稍微快一点.
nginx+nodejs cluster(3)
nginx 3进程+nodejs cluster(3)
无反向代理 | nginx单进程 | nginx多进程(3个) | |
nodejs fork | 1.341 | 6.545 | 1.332 |
nodejs cluster(3个) | 1.041 | 3.259 | 1.026 |
结论:
-
nginx作为反向代理,如果不开启多进程的情况下,还是会对性能有影响。
-
nodejs开启cluster模式比fork还是要快。
-
nginx开启多进程的情况下,几乎可以不影响性能,还可能提升部分性能。
* 以上测试在centos 6.5上完成,单机。
原文地址:http://www.monring.com/front_end/nodejs-cluster-nginx.html