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