您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Nginx如何優(yōu)化調(diào)整,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
1、網(wǎng)絡(luò)層面
帶寬
帶寬對(duì)Nginx性能的影響是最為直接的,就算如何獨(dú)享10M的帶寬也肯定不如100M帶寬下Nginx的性能。另外,現(xiàn)在大部分公司的網(wǎng)站都擁有多個(gè)二級(jí)域名在提供服務(wù),而這多個(gè)二級(jí)域名通常是共享一個(gè)出口帶寬的,這樣就造成Nginx來(lái)提供服務(wù)時(shí),資源會(huì)受干擾。
網(wǎng)絡(luò)質(zhì)量
在中國(guó)的互聯(lián)網(wǎng)中,網(wǎng)絡(luò)質(zhì)量跟國(guó)外是沒(méi)法比的,經(jīng)常出現(xiàn)的情況是客戶(hù)端到Nginx服務(wù)端總是會(huì)經(jīng)過(guò)好幾個(gè)路由,但凡其中任何一個(gè)路由節(jié)點(diǎn)出現(xiàn)問(wèn)題,會(huì)影響最終Nginx服務(wù)端的各種性能問(wèn)題,例如數(shù)據(jù)重傳、數(shù)據(jù)超時(shí)等
Nginx直連交換機(jī)收斂比
交換機(jī)收斂比通常指交換機(jī)接服務(wù)器的下行流量跟交換機(jī)上行鏈路的比例,一般中型及中小型公司對(duì)IDC業(yè)務(wù)網(wǎng)絡(luò)沒(méi)有過(guò)多的規(guī)劃,導(dǎo)致交換機(jī)收斂比通常是大于1的,也就意味著數(shù)據(jù)在交換機(jī)中是阻塞型轉(zhuǎn)發(fā),會(huì)影響Nginx的數(shù)據(jù)轉(zhuǎn)發(fā),尤其是作為反向代理時(shí)的影響更大。
Nginx架構(gòu)中網(wǎng)絡(luò)部署方式
大部分互聯(lián)網(wǎng)公司通常會(huì)采用如下結(jié)構(gòu)的網(wǎng)絡(luò):
這種結(jié)構(gòu)對(duì)比互聯(lián)網(wǎng)公司而言,請(qǐng)求需要經(jīng)過(guò)路由器、防火墻、IDS/IPS等好幾層的設(shè)備最終才能由業(yè)務(wù)服務(wù)器來(lái)響應(yīng)請(qǐng)求,這期間請(qǐng)求沒(méi)經(jīng)過(guò)一層都需要消耗一定的時(shí)間,通過(guò)累計(jì)這個(gè)時(shí)間就會(huì)被放大,而且防火墻的性能直接決定了Nginx可以承載的請(qǐng)求數(shù)。所以迫不得已要用防火墻的話(huà),請(qǐng)使用30萬(wàn)以上的防火墻來(lái)做,幾萬(wàn)的防火墻性能其實(shí)達(dá)不到業(yè)務(wù)需求的。
2、服務(wù)器硬件層面
CPU
Nginx的工作模型是master-worker方式,簡(jiǎn)單來(lái)說(shuō),越多的worker也就意味著越多的承載力,CPU的核心數(shù)從某種程度來(lái)說(shuō)決定了Nginx最佳的worker工作數(shù)量。
內(nèi)存
內(nèi)存的容量直接決定了Nginx可承載的最大連接數(shù)。
硬盤(pán)
Nginx的使用過(guò)程中,容易產(chǎn)生IO的地方還是挺多的,比如各種臨時(shí)文件、錯(cuò)誤日志、訪(fǎng)問(wèn)日志、緩存等。而硬盤(pán)的傳輸速度可以影響到這些產(chǎn)生的IO,比如硬盤(pán)的轉(zhuǎn)速、硬盤(pán)的容量、硬盤(pán)的輸出帶寬等。
網(wǎng)卡
這里以戴爾服務(wù)器舉例,戴爾服務(wù)器默認(rèn)配置的網(wǎng)卡為Broadcom的,這種網(wǎng)卡一般使用沒(méi)問(wèn)題,但遇上Nginx在處理大量小包的情況下,默認(rèn)配置的網(wǎng)卡就會(huì)發(fā)生嚴(yán)重丟包的事情,內(nèi)核層面的丟包會(huì)造成大量的數(shù)據(jù)重傳從而影響整個(gè)Nginx服務(wù)器的性能。所以對(duì)于Nginx而言需要選擇合適的網(wǎng)卡。
3、操作系統(tǒng)層面
/etc/sysctl.conf的配置
很多時(shí)候大部分的運(yùn)維都是從網(wǎng)上復(fù)制粘貼sysctl.conf的配置,對(duì)于其中一些value的配置都是沒(méi)有任何依據(jù),所以容易被出現(xiàn)的各種TCP狀態(tài)而擔(dān)心。而這些抄來(lái)的配置也從根本上影響著Nginx的運(yùn)行。
系統(tǒng)資源限制
這里的資源限制主要指文件句柄數(shù)的限制,文件句柄數(shù)的多少限制了Nginx可以支持的最大連接數(shù),不合理的配置會(huì)造成Nginx出現(xiàn)大量的500、502錯(cuò)誤。
IRQ Balance服務(wù)
關(guān)于IRQ Balance服務(wù),初衷是為了更好地利用CPU的資源來(lái)處理事務(wù),但很多場(chǎng)景下,包括Nginx的應(yīng)用,這個(gè)服務(wù)并不能起到利好的作用,反而會(huì)引起中斷的不平衡造成Nginx性能下降。
系統(tǒng)開(kāi)放多余的端口
嚴(yán)格來(lái)說(shuō),這種情況發(fā)生的幾率還是比較低的。一般沒(méi)有做運(yùn)維標(biāo)準(zhǔn)化的公司,在服務(wù)器安裝系統(tǒng)時(shí),默認(rèn)就會(huì)開(kāi)啟很多的服務(wù),比如sendmail、postfix、ntpd、bind等等,這些服務(wù)一般監(jiān)聽(tīng)在所有的IP上,也就意味著Nginx部署在這種環(huán)境下,一旦有惡意攻擊者攻擊非Nginx的端口,就會(huì)造成整個(gè)服務(wù)器資源被耗盡(DDoS的典型癥狀),從而讓Nginx失去服務(wù)能力。
4、Nginx層面
編譯進(jìn)業(yè)務(wù)不需要的模塊
有很多運(yùn)維對(duì)于Nginx的安裝大部分都是用yum或者apt-get進(jìn)行安裝,這種安裝基本上都會(huì)把一些不需要的模塊編譯進(jìn)去,在Nginx提供高并發(fā)時(shí)多少還是要消耗一定的內(nèi)存資源,前面我們說(shuō)了內(nèi)存直接決定了Nginx能夠承載多少連接的能力。
糟糕的配置
很多人發(fā)揮不了Nginx的性能,主要原因就是對(duì)Nginx的配置不熟悉,對(duì)于Nginx的參數(shù)指令不了解,所以各種各樣的配置五花八門(mén),這里實(shí)在沒(méi)法一一列舉,詳情可以參看度娘,一搜一大片。
緩存使用不合理
Nginx的緩存,本意是為了提升Nginx的處理能力,降低上游服務(wù)器的壓力,而大部分運(yùn)維也是從網(wǎng)上抄,于是帶來(lái)的結(jié)果就是緩存的不合理配置造成響應(yīng)延時(shí)過(guò)高、緩存清理麻煩等問(wèn)題。
5、上游服務(wù)器層面
Nginx在大部分的應(yīng)用場(chǎng)景要么是通過(guò)http協(xié)議來(lái)反向代理上游服務(wù)器,要么是通過(guò)fastcgi協(xié)議來(lái)代理php應(yīng)用,這兩類(lèi)應(yīng)用也是會(huì)對(duì)Nginx自身的性能帶來(lái)影響的。
PHP應(yīng)用
當(dāng)前一般都是使用PHP-FPM來(lái)提供fastcgi協(xié)議的接入,PHP的版本以及PHP-FPM的配置都會(huì)造成Nginx反代php-fpm時(shí),容易發(fā)生502、504的錯(cuò)誤。
Java應(yīng)用
一般用于Java應(yīng)用都逃不過(guò)Tomcat、jetty、resin,如果出現(xiàn)容器本身配置不合理、JVM不優(yōu)化、Java容器選擇不合理,將直接影響Nginx做反代時(shí)的并發(fā)能力。
關(guān)于“Nginx如何優(yōu)化調(diào)整”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。