影響Nginx性能的因素
發(fā)布時間:2018-02-23 瀏覽:885打印字號:大中小
Nginx的優(yōu)化不能單純看Nginx本身,其實有很多方面會影響到Nginx的整體性能。
1、網(wǎng)絡(luò)層面
帶寬
帶寬對Nginx性能的影響是最為直接的,就算如何獨享10M的帶寬也肯定不如100M帶寬下Nginx的性能。另外,現(xiàn)在大部分公司的網(wǎng)站都擁有多個二級域名在提供服務(wù),而這多個二級域名通常是共享一個出口帶寬的,這樣就造成Nginx來提供服務(wù)時,資源會受干擾。
網(wǎng)絡(luò)質(zhì)量
在中國的互聯(lián)網(wǎng)中,網(wǎng)絡(luò)質(zhì)量跟國外是沒法比的,經(jīng)常出現(xiàn)的情況是客戶端到Nginx服務(wù)端總是會經(jīng)過好幾個路由,但凡其中任何一個路由節(jié)點出現(xiàn)問題,會影響最終Nginx服務(wù)端的各種性能問題,例如數(shù)據(jù)重傳、數(shù)據(jù)超時等。
Nginx直連交換機收斂比
交換機收斂比通常指交換機接服務(wù)器的下行流量跟交換機上行鏈路的比例,一般中型及中小型公司對IDC業(yè)務(wù)網(wǎng)絡(luò)沒有過多的規(guī)劃,導(dǎo)致交換機收斂比通常是大于1的,也就意味著數(shù)據(jù)在交換機中是阻塞型轉(zhuǎn)發(fā),會影響Nginx的數(shù)據(jù)轉(zhuǎn)發(fā),尤其是作為反向代理時的影響更大。
Nginx架構(gòu)中網(wǎng)絡(luò)部署方式
大部分互聯(lián)網(wǎng)公司通常會采用如下結(jié)構(gòu)的網(wǎng)絡(luò):
這種結(jié)構(gòu)對比互聯(lián)網(wǎng)公司而言,請求需要經(jīng)過路由器、防火墻、IDS/IPS等好幾層的設(shè)備最終才能由業(yè)務(wù)服務(wù)器來響應(yīng)請求,這期間請求沒經(jīng)過一層都需要消耗一定的時間,通過累計這個時間就會被放大,而且防火墻的性能直接決定了Nginx可以承載的請求數(shù)。所以迫不得已要用防火墻的話,請使用30萬以上的防火墻來做,幾萬的防火墻性能其實達不到業(yè)務(wù)需求的。
2、服務(wù)器硬件層面
CPU
Nginx的工作模型是master-worker方式,簡單來說,越多的worker也就意味著越多的承載力,CPU的核心數(shù)從某種程度來說決定了Nginx優(yōu)質(zhì)的worker工作數(shù)量。
內(nèi)存
內(nèi)存的容量直接決定了Nginx可承載的連接數(shù)。
硬盤
Nginx的使用過程中,容易產(chǎn)生IO的地方還是挺多的,比如各種臨時文件、錯誤日志、訪問日志、緩存等。而硬盤的傳輸速度可以影響到這些產(chǎn)生的IO,比如硬盤的轉(zhuǎn)速、硬盤的容量、硬盤的輸出帶寬等。
網(wǎng)卡
這里以戴爾服務(wù)器舉例,戴爾服務(wù)器默認配置的網(wǎng)卡為Broadcom的,這種網(wǎng)卡一般使用沒問題,但遇上Nginx在處理大量小包的情況下,默認配置的網(wǎng)卡就會發(fā)生嚴(yán)重丟包的事情,內(nèi)核層面的丟包會造成大量的數(shù)據(jù)重傳從而影響整個Nginx服務(wù)器的性能。所以對于Nginx而言需要選擇合適的網(wǎng)卡。
3、操作系統(tǒng)層面
/etc/sysctl.conf的配置
很多時候大部分的運維都是從網(wǎng)上復(fù)制粘貼sysctl.conf的配置,對于其中一些value的配置都是沒有任何依據(jù),所以容易被出現(xiàn)的各種TCP狀態(tài)而擔(dān)心。而這些抄來的配置也從根本上影響著Nginx的運行。
系統(tǒng)資源限制
這里的資源限制主要指文件句柄數(shù)的限制,文件句柄數(shù)的多少限制了Nginx可以支持的連接數(shù),不合理的配置會造成Nginx出現(xiàn)大量的500、502錯誤
IRQ Balanc
關(guān)于IRQ Balance服務(wù),初衷是為了更好地利用CPU的資源來處理事務(wù),但很多場景下,包括Nginx的應(yīng)用,這個服務(wù)并不能起到利好的作用,反而會引起中斷的不平衡造成Nginx性能下降。
系統(tǒng)開放多余的端口
嚴(yán)格來說,這種情況發(fā)生的幾率還是比較低的。一般沒有做運維標(biāo)準(zhǔn)化的公司,在服務(wù)器安裝系統(tǒng)時,默認就會開啟很多的服務(wù),比如sendmail、postfix、ntpd、bind等等,這些服務(wù)一般監(jiān)聽在所有的IP上,也就意味著Nginx部署在這種環(huán)境下,一旦有惡意攻擊者攻擊非Nginx的端口,就會造成整個服務(wù)器資源被耗盡(DDoS的典型癥狀),從而讓Nginx失去服務(wù)能力。
4、Nginx層面
編譯進業(yè)務(wù)不需要的模塊
有很多運維對于Nginx的安裝大部分都是用yum或者apt-get進行安裝,這種安裝基本上都會把一些不需要的模塊編譯進去,在Nginx提供高并發(fā)時多少還是要消耗一定的內(nèi)存資源,前面我們說了內(nèi)存直接決定了Nginx能夠承載多少連接的能力。
糟糕的配置
很多人發(fā)揮不了Nginx的性能,主要原因就是對Nginx的配置不熟悉,對于Nginx的參數(shù)指令不了解,所以各種各樣的配置五花八門,這里實在沒法一一列舉,詳情可以參看度娘,一搜一大片。
緩存使用不合理
Nginx的緩存,本意是為了提升Nginx的處理能力,降低上游服務(wù)器的壓力,而大部分運維也是從網(wǎng)上抄,于是帶來的結(jié)果就是緩存的不合理配置造成響應(yīng)延時過高、緩存清理麻煩等問題。
5、上游服務(wù)器層面
Nginx在大部分的應(yīng)用場景要么是通過http協(xié)議來反向代理上游服務(wù)器,要么是通過fastcgi協(xié)議來代理php應(yīng)用,這兩類應(yīng)用也是會對Nginx自身的性能帶來影響的。
PHP應(yīng)用
當(dāng)前一般都是使用PHP-FPM來提供fastcgi協(xié)議的接入,PHP的版本以及PHP-FPM的配置都會造成Nginx反代php-fpm時,容易發(fā)生502、504的錯誤。
Java應(yīng)用
一般用于Java應(yīng)用都逃不過Tomcat、jetty、resin,如果出現(xiàn)容器本身配置不合理、JVM不優(yōu)化、Java容器選擇不合理,將直接影響Nginx做反代時的并發(fā)能力。
- 1簡約至美!新鴻儒傾力打造《銳馳官網(wǎng)》??榮獲2018IAI設(shè)計優(yōu)勝獎
- 2中紀(jì)委監(jiān)察部官網(wǎng)2018新版上線??新鴻儒設(shè)計增色彩
- 3新鴻儒?新春大拜年
- 4關(guān)于新麒麟抄襲新鴻儒官網(wǎng)的聲明
- 5不忘初心,感恩前行?新鴻儒新年遷新居
- 6華星鋼構(gòu)攜手新鴻儒??高端網(wǎng)站隆重亮相
- 7中儲糧簽約新鴻儒?糧食巨頭擁抱互聯(lián)網(wǎng)
- 8新鴻儒簽約方正??塑造集團互聯(lián)網(wǎng)品牌形象
- 9國美再次攜手新鴻儒?創(chuàng)新升級品牌官網(wǎng)
- 10新鴻儒協(xié)辦第二屆互聯(lián)網(wǎng)大會??助力工程建設(shè)行業(yè)互聯(lián)網(wǎng)+


