nginx與Node.js的優缺點是什麼?


呵呵,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秒。
而同樣的測試,對MySQL查詢操作:

? PHP 每秒響應請求數為1293,平均每個請求響應時間為0.82秒;

? Node.js 每秒響應請求數為2999,平均每個請求響應時間為0.33秒。


區別不是很大,一個更專業,一個更全面:

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的內存池實現?

TAG:伺服器端腳本 | Web伺服器軟體 | Nodejs | Nginx |