2021-03-10 分類: 網(wǎng)站建設(shè)
Nginx以高性能負(fù)載均衡、緩存和web服務(wù)器出名,支撐著世界上繁忙網(wǎng)站中的40%。大多數(shù)使用場景下,Nginx和Linux系統(tǒng)的默認(rèn)配置表現(xiàn)較好,但是仍有必要做一些調(diào)優(yōu)以期達(dá)到好性能。
這篇文章討論當(dāng)調(diào)優(yōu)系統(tǒng)時需要考慮的一些Nginx和Linux配置。這些配置有很多,但是在本文里我們只涉及適合大多數(shù)用戶的配置。那些沒有涉及到的配置,只有那些對Nginx和Linux有深入理解的人,或者Nginx專家服務(wù)團(tuán)隊推薦,才會考慮到。
Nginx專家服務(wù),已經(jīng)和世界上一些繁忙網(wǎng)站合作來調(diào)優(yōu)Nginx以達(dá)到大限度的性能,并且可以對任何需要充分發(fā)揮系統(tǒng)能力的客戶提供支持。
簡介
這里假定讀者對Nginx架構(gòu)和配置概念有個基本了解。本文不會重復(fù)Nginx文檔的內(nèi)容,而是概述各種配置選項并提供相關(guān)文檔鏈接。
調(diào)優(yōu)時,有一條較好的準(zhǔn)則是,一次只改一個配置項,如果改后沒有性能上的提升,就退回為原先的值。
我們先討論Linux調(diào)優(yōu),因?yàn)橛行┲禃绊懺贜ginx配置中可以用的值。
Linux配置
現(xiàn)代Linux內(nèi)核(2.6+)能夠很好的調(diào)節(jié)各種配置,有些配置您可能想更改。如果操作系統(tǒng)配置太低,那么會在內(nèi)核日志中看到錯誤信息,因此需要調(diào)節(jié)這些配置。Linux配置項很多,本文只提及那些在普通工作負(fù)載下最可能需要調(diào)優(yōu)的配置項。如果需要這些配置的詳細(xì)信息,請參考Linux文檔。
Backlog隊列
以下設(shè)置與連接及其如何排隊直接相關(guān)。如果傳入的連接率很高而性能水平參差不齊,比如一些連接似乎被暫停了,那么更改這些配置可能會有用。
文件描述符
文件描述符是一種操作系統(tǒng)資源,用來處理諸如連接和打開文件的事情。對每一個連接,Nginx可以用上多達(dá)兩個文件描述符。例如,如果Nginx用作代理,則其中一個用于客戶端連接,另一個用于連接到被代理的服務(wù)器。如果使用了HTTP keepalive,則連接描述符的使用會少得多。對于有大量連接的系統(tǒng),如下設(shè)置可能需要進(jìn)行調(diào)整:
臨時端口
當(dāng)Nginx被當(dāng)作代理使用時,每一個到upstream服務(wù)器的連接都使用一個臨時端口。
Nginx配置
下面是一些可能影響性能的Nginx指令。如前所述,我們僅討論那些推薦大多數(shù)用戶調(diào)整的指令。這里未提及到的任何指令,如果沒有Nginx團(tuán)隊的指導(dǎo),不推薦更改。
工作進(jìn)程
Nginx可以運(yùn)行多個工作進(jìn)程,每個都能處理大量連接。你可以用如下指令控制工作進(jìn)程個數(shù)以及連接如何被處理:
Keepalives
持久連接可以減少打開和關(guān)閉連接所需要的CPU和網(wǎng)絡(luò)開銷,因而對性能有重大影響。Nginx終止所有客戶端連接,并具有到upstream服務(wù)器的單獨(dú)連接。Nginx支持客戶端和upstream服務(wù)器的持久連接。如下指令涉及客戶端持久連接:
如下指令涉及upstream持久連接:
為了啟用到upstream的持久連接,需要增加如下指令:
Access日志
記錄每個請求需要花費(fèi)CPU和IO周期,減少這種影響的一種方法是啟用access日志緩沖。這將導(dǎo)致Nginx緩沖一系列日志條目,然后一次性寫入文件而不是單個單個寫入。
通過指定access_log指令的"buffer=size"選項可以打開access日志緩沖,該設(shè)置指定要使用的緩沖區(qū)的大小。你還可以使用"flush=time"選項告訴Nginx多長時間后把緩沖區(qū)中的條目寫入文件。
定義了這兩個選項后,當(dāng)緩沖區(qū)放不下下一條日志,或者緩沖區(qū)中的條目超過了flush參數(shù)指定的時間,Nginx會將緩沖區(qū)中的條目寫入日志文件。當(dāng)工作進(jìn)程重新打開日志文件或者關(guān)閉時,緩沖區(qū)中的條目也會被寫入文件。也可以完全禁用access日志記錄。
Sendfile
Sendfile是一個操作系統(tǒng)特性,可以在Nginx上啟用。它通過在內(nèi)核中從一個文件描述符向另一個文件描述符復(fù)制數(shù)據(jù),往往能達(dá)到零拷貝,因而可以提供更快的TCP數(shù)據(jù)傳輸。Nginx可以使用該機(jī)制將緩存或者磁盤上的內(nèi)容寫到socket,無需從內(nèi)核空間到用戶空間的上下文切換,因而非??觳⑶沂褂幂^少的CPU開銷。由于數(shù)據(jù)永遠(yuǎn)不會觸及用戶空間,所以不可能把需要訪問數(shù)據(jù)的過濾器插入到處理鏈中,不能使用任何需要改變內(nèi)容的Nginx過濾器,比如gzip過濾器。Nginx默認(rèn)沒有啟用該機(jī)制。
限制
Nginx和Nginx Plus允許設(shè)置各種限制,用來控制客戶端資源消耗,以防影響系統(tǒng)性能以及用戶體驗(yàn)和安全。以下是一些相關(guān)指令:
其它考慮
Nginx還有一些特性可以用來提高web應(yīng)用的性能。這些特性不常出現(xiàn)在調(diào)優(yōu)討論中,但是有必要一提,因?yàn)樗鼈兊挠绊懸部赡鼙容^可觀。我們將討論這些特性中的兩個。
緩存
對于一個為一組web服務(wù)器或者應(yīng)用服務(wù)器作負(fù)載均衡的Nginx實(shí)例來說,啟用緩存可以顯著地降低響應(yīng)時間,同時能顯著減輕后端服務(wù)器的負(fù)載。緩存本身就是一個主題,這里不會討論。
壓縮
壓縮響應(yīng)可以大大減小響應(yīng)的大小,減少帶寬占用。不過,這需要CPU資源來處理壓縮,所以最好在值得減少帶寬占用的情況下使用。需要注意的是,不能對已經(jīng)壓縮的東西(比如jpeg圖片)再次啟用壓縮。
網(wǎng)頁題目:大流量、高負(fù)載場景 Nginx+Linux性能調(diào)優(yōu)
網(wǎng)址分享:http://m.rwnh.cn/news38/104938.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、搜索引擎優(yōu)化、全網(wǎng)營銷推廣、網(wǎng)站制作、Google、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容