nginx與Node.js的優缺點是什麼?
05-29
呵呵,nginx難道不是Non-blocking I/O?我實在想不通,這2個有什麼好比的。Node.js 與 PHP + Nginx
Snoopyxd 詳細對比了 Node.js 與 PHP+Nginx 組合,結果顯示在3000並發連接、30秒的
測試下,輸出「hello world」請求:
1.5
? PHP 每秒響應請求數為3624,平均每個請求響應時間為0.39秒;
? Node.js 每秒響應請求數為7677,平均每個請求響應時間為0.13秒。
? PHP 每秒響應請求數為1293,平均每個請求響應時間為0.82秒;? Node.js 每秒響應請求數為2999,平均每個請求響應時間為0.33秒。
而同樣的測試,對MySQL查詢操作:區別不是很大,一個更專業,一個更全面:
1.相似點:1.1非同步非阻塞I/O, 事件驅動;
2.不同點: 2.1Nginx 採用C編寫,更性能更高,但是它僅適合於做web伺服器,用於反向代理或者負載均衡等服務;Nginx背後的業務層編程思路很還是同步編程方式,例如PHP. 2.2NodeJs高性能平台,web服務只是其中一塊,NodeJs在處理業務層用的是JS編寫,採用的是非同步編程方式和思維方式。粗淺的理解額,這個問題提得,不知道怎麼回答。node.js貌似應該跟python/ruby等服務端語言對比。
我就來說說node.js最大的優點吧:Non-blocking I/O。
很多人都知道node.js是asynchronize編程模型,提供了全套non-blocking I/O。但non-blocking I/O為什麼很重要,或者說很吊?它究竟能帶來多大的性能提升?
我們知道在計算機體系結構中,I/O離CPU越近,速度越快(但魚與熊掌不可兼得,代價是存儲能力越小)。我們看看這張表(每次I/O所花CPU cycle):
- L1:幾個
- L2:幾十
- RAM:幾百
- Disk:幾十million
- Network:幾百個million
所以對於一個web app來說,non-blocking I/O能帶來無可比擬的性能優勢。因為你的系統大部分時間都在跟網路通訊打交道(request/response)。越是I/O密集型,node.js的優勢就越明顯。
更多關於node.js的介紹可見我的slide:Nodejs basics
我也想問同樣的問題,單用nodejs做反向代理到底會差多少?為什麼一定要用nginx或者Apache?
一群答非所問的人,不懂裝懂,只有haonan liu回答到點上,其餘全瞎扯蛋
人家明明是問作為web伺服器來說,兩者的優缺點。
建議你拆成兩個問題:nginx的優缺點是什麼?nodejs的優缺點是什麼?或者是:nginx和apache比較優缺點是什麼,nodejs和php比較優缺點是什麼?
nginx是作為web伺服器或者反向代理伺服器出現的,nodejs可以看作伺服器端js。兩者不太具有可比性!題主可能是想問他們並發處理的優缺點吧?nodejs和nginx的優點是一樣的:並發處理能力強,內部使用了操作系統的非同步機制(windows完成埠,linux用epoll)。缺點嘛,就各不相同了,都是各種領域的問題,比如nodejs編寫方式太多callback,不直觀,不好調試等…
這個沒有辦法比較的吧,一個是WEB伺服器,一個是服務端JS。
推薦閱讀:
※是什麼讓你的 nginx 服務退出這麼慢?
※linux系統centOS6.5使用goaccess工具分析nginx網站日誌
※ubuntu nginx安裝、集成tomcat、動靜分離、集群、SSL卸載......
※如何配置nginx+uwsgi+django?
※nginx的內存池實現?