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