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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM