Nginx配置優化

2022-10-08 21:12:16 字數 3669 閱讀 5179

設定nginx程序數,推薦按照cpu數目來指定,一般跟cpu核數相同。

worker_processes 8;

為每個程序分配cpu,上例中將8個程序分配到8個cpu,當然可以寫多個,或者將乙個程序分配到多個cpu。

worker_cpu_affinity 0001 0010 0011 0100 0101 0110 0111 1000;

配置nginx程序開啟的最多檔案數目,理論值應該是系統的最多開啟檔案數(ulimit -n)與nginx程序數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n的值保持一致。

worker_rlimit_nofile 65535;

使用epoll的i/o模型,用這個模型來高效處理非同步事件

use epoll;

每個程序允許的最多連線數,理論上每台nginx伺服器的最大連線數為

worker_processes*worker_connections。

worker_connections 65535;

http連線超時時間,預設是60s,功能是使客戶端到伺服器端的連線在設定的時間內持續有效,當出現對伺服器的後繼請求時,該功能避免了建立或者重新建立連線。切記這個引數也不能設定過大!否則會導致許多無效的http連線佔據著nginx的連線數,終nginx崩潰!

keepalive_timeout 60;

客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設定,一般乙個請求的頭部大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。分頁大小可以用命令getconf pagesize取得。

client_header_buffer_size 4k;

下面這個引數將為開啟檔案指定快取,預設是沒有啟用的,max指定快取數量,建議和開啟檔案數一致,inactive是指經過多長時間檔案沒被請求後刪除快取。

open_file_cache max=102400 inactive=20s;

下面這個是指多長時間檢查一次快取的有效資訊。

open_file_cache_valid 30s;

open_file_cache指令中的inactive引數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一直是在快取中開啟的,如上例,如果有乙個檔案在inactive時間內一次沒被使用,它將被移除。

open_file_cache_min_uses 1;

隱藏響應頭中的有關作業系統和web server(nginx)版本號的資訊,這樣對於安全性是有好處的。

server_tokens off;

開啟零拷貝。可以讓sendfile()發揮作用,sendfile()可以在磁碟和tcp socket之間互相拷貝資料(或任意兩個檔案描述符)。pre-sendfile是傳送資料之前在使用者空間申請資料緩衝區。之後用read()將資料從檔案拷貝到這個緩衝區,write()將緩衝區資料寫入網路。sendfile()是立即將資料從磁碟讀到os快取。因為這種拷貝是在核心完成的,sendfile()要比組合read()和write()以及開啟關閉丟棄緩衝更加有效(更多有關於sendfile)。

sendfile on;

告訴nginx在乙個資料報裡傳送所有標頭檔案,而不乙個接乙個的傳送。就是說資料報不會馬上傳送出去,等到資料報最大時,一次性的傳輸出去,這樣有助於解決網路堵塞。

tcp_nopush on;

告訴nginx不要快取資料,而是一段一段的傳送–當需要及時傳送資料時,就應該給應用設定這個屬性,這樣傳送一小塊資料資訊時就不能立即得到返回值。

tcp_nodelay on;

比如:http

客戶端請求頭部的緩衝區大小,這個可以根據系統分頁大小來設定,一般乙個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。

client_header_buffer_size 4k;

客戶端請求頭部的緩衝區大小,這個可以根據系統分頁大小來設定,一般乙個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裡設定為分頁大小。

分頁大小可以用命令getconf pagesize取得。

[root@local~]# getconf pagesize

4096

但也有client_header_buffer_size超過4k的情況,但是client_header_buffer_size該值必須設定為「系統分頁大小」的整倍數。

為開啟檔案指定快取,預設是沒有啟用的,max 指定快取數量,建議和開啟檔案數一致,inactive 是指經過多長時間檔案沒被請求後刪除快取。

open_file_cache max=65535 inactive=60s;

open_file_cache 指令中的inactive 引數時間內檔案的最少使用次數,如果超過這個數字,檔案描述符一直是在快取中開啟的,如上例,如果有乙個檔案在inactive 時間內一次沒被使用,它將被移除。

open_file_cache_min_uses 1;

指定多長時間檢查一次快取的有效資訊。

}}負載均衡

upstream payapi

nginx配置優化

worker processes指令控制工作程序數 worker processes 1 其預設值為1,這意味著nginx只執行乙個worker。該值應根據可用核心數,磁碟,網路子系統,伺服器負載等更改為最佳值。我們可以將值設定為可用的核心數。使用lscpu確定可用的核心數 lscpu archit...

Nginx配置優化

由於nginx處理php請求的第二步需要通過socket的方式和php fpm通訊,它能新建的最大socket數受到系統最大開啟檔案數的限制。新裝的linux預設只有1024,所以必須增加系統最大開啟檔案數目。ulimit n 命令可以檢視當前系統最大開啟檔案數。ulimit n 65535 可以將...

Nginx優化配置

user nobody 工作程序數,一般設定為cpu核心數 客戶端鏈結超時時間 keepalive timeout 65 gzip on 當配置多個server節點時,預設server names的快取區大小就不夠了,需要手動設定大一點 server names hash bucket size 5...