Nginx效能優化

2021-09-17 18:19:19 字數 2178 閱讀 7013

簡介

在大多數情況下,乙個常規安裝的nginx對**來說已經能很好地工作了。然而如果想擠壓出nginx的效能,就需要了解哪些指令會影響nginx效能,在本文中將解釋nginx的哪些設定可以微調。需要注意一點,這是乙個簡單的預覽——那些可以通過微調來提高效能設定的概述,不同的環境可能情況不太一樣。

對於nginx的調優,可以大致從如下指令著手:

worker_processes

worker_connections

buffers

timeouts

gzip compression

static file caching

logging

1 worker_processes

worker_processes表示工作程序的數量,一般情況設定成cpu核的數量即可,乙個cpu配置多於乙個worker數,對nginx而言沒有任何益處,另外不要忘了設定worker_cpu_affinity,這個配置用於將worker process與指定cpu核繫結,降低由於多cpu核切換造成的暫存器等現場重建帶來的效能損耗。 grep processor /proc/cpuinfo | wc -l這個命令會告訴你當前機器是多少核,輸出為2即表示2核。

2 worker_connections

worker_connections配置表示每個工作程序的併發連線數,預設設定為1024。

可以更新如下配置檔案來修改該值: sudo vim /etc/nginx/nginx.conf

worker_processes 1;

worker_connections 1024;

3. buffers

buffers:另乙個很重要的引數為buffer,如果buffer太小,nginx會不停的寫一些臨時檔案,這樣會導致磁碟不停的去讀寫,現在我們先了解設定buffer的一些相關引數: client_body_buffer_size:允許客戶端請求的最大單個檔案位元組數 client_header_buffer_size:用於設定客戶端請求的header頭緩衝區大小,大部分情況1kb大小足夠 client_max_body_size:設定客戶端能夠上傳的檔案大小,預設為1m large_client_header_buffers:該指令用於設定客戶端請求的header頭緩衝區大小

client_body_buffer_size 10k;

client_header_buffer_size 1k;

client_max_body_size 8m;

large_client_header_buffers 2 1k;

4. timeouts

client_header_timeout和client_body_timeout設定請求頭和請求體(各自)的超時時間,如果沒有傳送請求頭和請求體,nginx伺服器會返回408錯誤或者request time out。 keepalive_timeout給客戶端分配keep-alive鏈結超時時間。伺服器將在這個超時時間過後關閉鏈結,我們將它設定低些可以讓nginx持續工作的時間更長。 send_timeout 指定客戶端的響應超時時間。這個設定不會用於整個**器,而是在兩次客戶端讀取操作之間。如果在這段時間內,客戶端沒有讀取任何資料,nginx就會關閉連線。

client_body_timeout 12;

client_header_timeout 12;

keepalive_timeout 15;

send_timeout 10;

5. gzip compression

開啟gzip,gzip可以幫助nginx減少大量的網路傳輸工作,另外要注意gzip_comp_level的設定,太高的話,nginx服務會浪費cpu的執行週期。

gzip on;

gzip_comp_level 2;

gzip_min_length 1000;

gzip_proxied expired no-cache no-store private auth;

expires 365d;
}

以上的檔案型別可以根據nginx伺服器匹配增加或減少。

logging

access_log設定nginx是否將儲存訪問日誌。關閉這個選項可以讓讀取磁碟io操作更快。 可以修改配置檔案將該功能關閉:

access_log off;

然後重啟nginx服務:

sudo service nginx restart

Nginx效能優化

在http裡面新增一行 server tokens off 預設可以設定為cpu的核數相等,併發比較大的時候,可以設定為cpu核數 2 worker cpu affinity 0001 0010 0100 1000 四核worker cpu affinity 00000001 00000010 00...

nginx效能優化

1 執行緒池 預設情況下,nginx的work process按照順序乙個個處理http請求,因此如果後台處理時間較長,則work process會長時間等待io狀態,因此限制併發性。如下所示 所以,對於可能存在的這類http請求,一般會啟用執行緒池。預設情況下,執行緒池特性並不啟用,需要在編譯時增...

Nginx 效能優化

如何有效使用cpu worker processes number auto為什麼乙個cpu就可以同時執行多個程序?cup巨集觀上並行,微觀上序列 阻塞api引發的時間片內主動讓出cup 業務場景產生的阻塞api 對於cpu的優化的點 盡可能的減少程序間的切換 減少主動切換 減少被動切換 鎖定cpu...