23
2016
03

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 fork1.3416.5451.332
nodejs cluster(3个)1.0413.2591.026


结论:

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

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

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


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

« 上一篇下一篇 »

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。