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


