Apache與Nginx的優缺點比較

2021-08-09 10:26:46 字數 4213 閱讀 2911

apache與

nginx

的優缺點比較

1、

nginx

相對於apache

的優點:

輕量級,同樣起web 服務,比

apache

占用更少的記憶體及資源

抗併發,nginx 處理請求是非同步非阻塞的,而

apache

則是阻塞型的,在高併發下

nginx

能保持低資源低消耗高效能

高度模組化的設計,編寫模組相對簡單

社群活躍,各種高效能模組出品迅速

apache 相對於

nginx

的優點:

rewrite ,比

nginx

的rewrite

強大模組超多,基本想到的都可以找到

少bug ,

nginx

的bug

相對較多

超穩定

存在就是理由,一般來說,需要效能的web 服務,用

nginx

。如果不需要效能只求穩定,那就

apache

吧。後者的各種功能模組實現

要和前者

相比,例如ssl 的模組就比前者好,可配置項多。這裡要注意一點,

epoll(freebsd

上是 kqueue )

網路io

模型是nginx

處理效能高的根本理由,但並不是所有的情況下都是

epoll

大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個檔案,

apache

的select

模型或許比

epoll

更高效能。當然,這只是根據網路

io 模型的原理作的乙個假設,真正的應用還是需要實測了再說的。

2、作為

web

伺服器:相比

apache

,nginx

使用更少的資源,支援更多的併發連線,體現更高的效率,這點使

nginx

尤其受到虛擬主機提供商的歡迎。在高連線併發的情況下,

nginx

是apache

伺服器不錯的替代品

: nginx

在美國是做虛擬主機生意的老闆們經常選擇的軟體平台之一

. 能夠支援高達

50,000

個併發連線數的響應

, 感謝

nginx

為我們選擇了

epoll and kqueue

作為開發模型

. nginx作為負載均衡伺服器

: nginx

既可以在內部直接支援

rails

和 php

程式對外進行服務

, 也可以支援作為

** 伺服器對外進行服務

. nginx採用c

進行編寫

, 不論是系統資源開銷還是

cpu使用效率都比

perlbal

要好很多

. 作為郵件**伺服器: nginx 同時也是乙個非常優秀的郵件**伺服器(最早開發這個產品的目的之一也是作為郵件**伺服器)

, last.fm

描述了成功並且美妙的使用經驗

. nginx 是乙個安裝非常的簡單

, 配置檔案非常簡潔(還能夠支援

perl

語法), bugs

非常少的伺服器

: nginx

啟動特別容易

, 並且幾乎可以做到

7*24

不間斷執行,即使執行數個月也不需要重新啟動

. 你還能夠不間斷服務的情況下進行軟體版本的公升級

. 3、

nginx

配置簡潔

, apache

複雜nginx 靜態處理效能比

apache 高 3

倍以上apache 對

php

支援比較簡單,

nginx

需要配合其他後端用

apache 的元件比

nginx

多現在 nginx 才是

web

伺服器的首選

4、最核心的區別在於

apache

是同步多程序模型,乙個連線對應乙個程序;

nginx

是非同步的,多個連線(萬級別)可以對應乙個程序

5、nginx

處理靜態檔案好

,耗費記憶體少

.但無疑

apache

仍然是目前的主流

,有很多豐富的特性

.所以還需要搭配著來

.當然如果能確定

nginx

就適合需求

,那麼使用

nginx

會是更經濟的方式

. 6、

nginx

的負載能力比

apache

高很多。最新的伺服器也改用

nginx

了。而且

nginx

改完配置能

-t測試一下配置有沒有問題,

apache

重啟的時候發現配置出錯了,會很崩潰,改的時候都會非常小心翼翼現在看有好多集群站,前端

nginx

抗併發,後端

apache

集群,配合的也不錯。

7、nginx

處理動態請求是雞肋,一般動態請求要

apache

去做,nginx

只適合靜態和反向。

8、nginx

是很不錯的前端伺服器,負載效能很好,在老奔上開

nginx

,用webbench

模擬10000

個靜態檔案請求毫不吃力。

apache

對php

等語言的支援很好,此外

apache

有強大的支援網路,發展時間相對

nginx

更久,bug

少但是apache

有先天不支援多核心處理負載雞肋的缺點,建議使用

nginx

做前端,後端用

apache

。大型網站建議用

nginx

自代的集群功能

9、nginx

優於apache

的主要兩點:

1.nginx

本身就是乙個反向**伺服器

2.nginx支援7

層負載均衡;其他的當然,

nginx

可能會比

apache

支援更高的併發,但是根據

netcraft

的統計,

2023年4

月的統計資料,

apache

依然占有

62.71%

,而nginx

是7.35%

,因此總得來說,

aapche

依然是大部分公司的首先,因為其成熟的技術和開發社群已經也是非常不錯的效能。

10、你對

web server

的需求決定你的選擇。大部分情況下

nginx

都優於apache

,比如說靜態檔案處理、

php-cgi

的支援、反向**功能、前端

cache

、維持連線等等。在

apache+php

(prefork

)模式下,如果

php處理慢或者前端壓力很大的情況下,很容易出現

apache

程序數飆公升,從而拒絕服務的現象。

11、可以看一下

nginx lua

模組:比nginx

多的模組,可直接用

lua實現

apache

是最流行的,

why?大多數人懶得更新到

nginx

或者學新事物

12、對於

nginx

,正則配置讓很多事情變得簡單執行效率高,占用資源少,**功能強大,很適合做前端響應伺服器

13、apache

在處理動態有優勢,

nginx

併發性比較好,

cpu記憶體占用低,如果

rewrite

頻繁,那還是

apache吧

Fragment與Activity的優缺點比較

專案中對activity和fragment使用都很多,它們都能用來寫頁面,那麼什麼時候用activity,什麼時候用fragment?關於 android,用多個 activity,還是單 activity 配合 fragment?中提到 單activity多fragment實現,已知的坑有,act...

hibernate與mybatis的優缺點

1 hibernate真正掌握要比mybatis難,因為hibernate的功能和特性非常多,還不適合多表關聯查詢。2 hibernate和mybatis都有 生成工具,可以生成簡單的dao方法。但對於高階查詢mybatis需要自己寫sql以及resultmap,而hibernate有良好的反射機制...

hibernate與mybatis的優缺點

1 hibernate真正掌握要比mybatis難,因為hibernate的功能和特性非常多,還不適合多表關聯查詢。2 hibernate和mybatis都有 生成工具,可以生成簡單的dao方法。但對於高階查詢mybatis需要自己寫sql以及resultmap,而hibernate有良好的反射機制...