Nodejs高性能服务架构:cluster模式+Nginx多进程模式

Nodejs和Nginx都是轻量级,高性能服务器的代表,而Nodejs站点的标准配置就是在Nodejs服务器上架一层Nginx反向代理,两种轻量级高性能的服务器组合在一起产生什么样的火花呢?往下看。

为什么要在Nodejs上加Nginx反向代理,原因归纳如下:

  1. 用Nginx来做静态资源的反向代理,减少Nodejs的压力;

  2. Nginx自带日志功能,可以没必要Nodejs去处理这个问题了

  3. Nginx用来做负载均衡,增加横向扩展性

  4. 假如一台服务器多个Nodejs站点,或则一个域名下挂多个站点或不同中语言的站点。有个反向代理都可以处理。

加了Nginx做反向代理是否对网站性能有影响?答案是有影响,但咱有方案:Nginx多进程+Nodejs Cluster

做个测试,那10000次连接,1000并发来测试。

在nodejs的fork模式的速度是

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

nginx 单进程+nodejs fork:基本看上去就慢很多了。

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

nginx 3进程+nodejs fork:这个跟不用反向代理的速度差不多

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

nodejs cluster(3)比fork模式稍微快一点.

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

nginx+nodejs cluster(3)

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

nginx 3进程+nodejs cluster(3)

Nodejs高性能服务架构:cluster模式+Nginx多进程模式

 

  无反向代理 nginx单进程 nginx多进程(3个)
nodejs fork 1.341 6.545 1.332
nodejs cluster(3个) 1.041 3.259 1.026

 

结论:

  1. nginx作为反向代理,如果不开启多进程的情况下,还是会对性能有影响。

  2. nodejs开启cluster模式比fork还是要快。

  3. nginx开启多进程的情况下,几乎可以不影响性能,还可能提升部分性能。

 

* 以上测试在centos 6.5上完成,单机。

 

原文地址:http://www.monring.com/front_end/nodejs-cluster-nginx.html

posted @ 2016-03-28 22:55 红草帽 阅读(...) 评论(...)  编辑 收藏