Nginx大併發優化實戰

2022-09-24 21:21:10 字數 2800 閱讀 6804

一、調優的必要性

程式設計客棧203; 一直不願意寫優化的內容出來分享,實在是不知道該如何取寫。因為,寫不好就會被各種慰問,今天終於還是寫了,因為有太多人私信或在群裡問我或者讓給分享經驗,我還是從了。

​ 在聊調優之前,我們先要知道為何調優,業務執行和調優的關係。

這就是業務執行的乙個流程,也是我們保證業務穩定、高效、高可用的運維之道。

二、調優的維度和見解分歧

​ 調優類的文章是最難寫的,因為我只能告訴你調優的選項,無法告訴你具體的閾值,因為不同的業務執行在不同的機器,所消耗的資源是不同的;又因為場景不同,對應的調優項及閾值是千變萬化的,就好比你和你上鋪的兄弟都是感冒了,去醫院看病開的藥卻是截然不同的。正是如此,才會出現當很多人看到調優的文章,看到了具體的調優項或者閾值就會浮現出兩個字,我不好意思說,配個圖吧!大家意會就好。

三、nginx調優

1、nginx併發數設定

worker_processes 1;

這是用來配置nginx啟動幾個工作程序的,預設為1。而nginx還支援乙個名為worker_cpu_affinity的配置項,也就是說,nginx可以為每個工作程序繫結cpu。我做了如下配置:

events

2、nginx將程序繫結在固定核

worker_cpu_affinity 0010 0100 1000;

worker_processes 3;

worker_cpu_affinity 0010 0100 1000;

#這裡0010 0100 1000是掩碼,分別代表第2、3、4顆cpu核心。

重啟nginx後,3個工作程序就可以各自用各自的cpu了。

ps -eo psr,pid,arg 檢視

nginx的併發=worker_processes*worker_connections

3、nginx 壓縮功能

壓縮功能對於web伺服器來說太重要了,主要體現在以下兩個方向:

​ 1)提公升使用者體驗:傳輸資料變小,使用者等待時間變短。

​ 2)節省公司頻寬成本:壓縮後傳輸,傳輸資料變小,頻寬占用的更少。

既然能給使用者好的體驗,又能給公司省錢。這麼好的事情何樂不為呢,所以這個是工作中必備配置神器。

但是配置壓縮需要更大家說一下注意事項:

​ 1)、音**不要壓縮

​ 2)小於1k的不要壓縮,否則越壓越大

​ 3)壓縮級別越大,就越消耗cpu

未開啟壓縮

開啟壓縮

**如下:

gzip on; (啟用 gzip 壓縮功能)

gzip_http_version 1.1; 它的預設值是http/1.1,就是說對http/1.1協議的請求才會進行gzip壓縮

gzip_disable "msie [1-6].";設定是禁用ie1-6版本的gzip壓縮

gzip_proxied any; (nginwww.cppcns.comx 做前端**時啟用該選項,表示無論後端伺服器的headers頭返回什麼資訊,都無條件啟用壓縮)

gzip_min_length 1024; (最小壓縮的頁面,如果頁面過於小,可能會越壓越大,這裡規定大於1k的頁面才啟用壓縮)

gzip_buffers 4 8k; (設定系統獲取幾個單位的快取用於儲存gzip的壓縮結果資料流 按照原始資料大小以8k為單位申請4倍記憶體空間)

gzip_comp_level 3; (壓縮級別,1壓縮比最小處理速度最快,9壓縮比最大但處理最慢,同時也最消耗cpu,一般設定為3就可以了)

gzip_types text/plain text/css application/x-j**ascript application/j**ascript application/xml; (什麼型別的頁面或文件啟用壓縮)

開啟壓縮驗證

4、nginx 本地快取功能

​ 瀏覽器快取(browser caching) 是為了加速瀏覽並節約網路資源,瀏覽器在使用者磁碟上對最近請求過的文件進行儲存。

​ 客戶端快取和壓縮有本質的區別,使用者第一次**資料後會被儲存在客戶本地硬碟,下次在使用的時候,只要本地資源沒有過期,就直接從本地硬碟讀取了,速度最快,因為不用去找web伺服器拿資料了。同樣它優化了使用者體驗和節省了公司頻寬成本

需要注意的是:

​ 快取一般快取的是、**框架、音**等不常變lntao化的資料。應用最好的就是百度首頁,大家有沒有發現有時候你沒網都能開啟百度首頁啊,那就是看的你本地快取。

nginx本地快取配置指令

nginx可以通過 expires 指令來設定瀏覽器的header

語法: expires [time|epoch|max|off]

預設值: expires off

作用域: http, server, location

使用本指令可以控制http應答中的「expires」和「cache-control」的頭標,(起到控制頁面快取的作用)。

可以在time值中使用正數或負數。「expires」頭標的值將通過當前系統時間加上您設定的 time 值來獲得。

epoch 指定「expires」的值為 1 january, 1970, 00:00:01 gmt。

max 指定「expires」的值為 31 december 2037 23:59:59 gmt,「cache-control」的值為10年。

-1 指定「expires」的值為 伺服器當前時間 -1s,即永遠過期

快取案例

快取30天

js css快取一小時

location ~.*\.(js|css)?$

快取驗證

本文標題: nginx大併發優化實戰

本文位址:

Nginx併發訪問優化

nginx反向 併發能力的強弱,直接影響到系統的穩定性。安裝nginx過程,預設配置並不涉及到過多的併發引數,作為產品執行,不得不考慮這些因素。nginx作為產品執行,官方建議部署到linux64位系統,基於該建議,本文中從系統線之上考慮nginx的併發優化。1 開啟linux系統epoll支援 e...

Nginx 之併發優化

客戶端 服務端 連線數 ulimit n 100000 nginx 鏈結數 10240 個 worker connections 10240 允許開啟檔案數 worker processes 1 worker rlimit nofile 10000 系統的最大鏈結數 more proc sys ne...

Nginx併發訪問優化

nginx反向 併發能力的強弱,直接影響到系統的穩定性。安裝nginx過程,預設配置並不涉及到過多的併發引數,作為產品執行,不得不考慮這些因素。nginx作為產品執行,官方建議部署到linux64位系統,基於該建議,本文中從系統線之上考慮nginx的併發優化。1 開啟linux系統epoll支援 e...