NGINX高效能Web伺服器詳解 讀書筆記

2021-09-07 08:26:26 字數 3136 閱讀 7575

第4章  nginx伺服器的高階配置

4.1 針對ipv4的核心7個引數的配置優化

說明:我們可以將這些核心引數的值追加到linux系統的/etc/sysctl.conf檔案中,然後使用如下命令使修改生效:

/sbin/sysctl -p

(1)net.core.netdev_max_backlog引數

表示當每個網路介面接收資料報的速度比核心處理這些包的速率快時,允許傳送到佇列的資料報的最大數目。預設值為128.

nginx伺服器中定義的ngx_listen_backlog的預設值為511.

(2)net.core.somaxconn引數

該引數用於調節系統同時發起的tcp連線數,預設值為128.在客戶端存在高併發請求的情況下,該預設值較小,可能導致鏈結超時或者重傳問題,我們可以根據實際需要結合併發請求數來調節此值。

(3)net.ipv4.tcp_max_orphans引數

該引數用於設定系統中最多允許存在多少tcp套接字不被關聯到任何乙個使用者檔案控制代碼上。如果超過這個數字,沒有與使用者檔案控制代碼關聯的tcp套接字將立即被復位,同時給出警告資訊。這個限制只是為了防止簡單的dos攻擊。

(4)net.ipv4.tcp_max_syn_backlog引數

該引數用於記錄尚未收到客戶端確認資訊的連線請求的最大值。對於128mb記憶體的系統來說,預設值是1204。小記憶體系統是128.

(5)net.ipv4.tcp_timestamps引數

該引數用於設定時間戳,可避免序列號的捲繞。當此值賦值為0時,禁用對於tcp時間戳的支援。對於nginx伺服器來說,建議關閉。

(6)net.ipv4.tcp_synack_retires引數

該引數用於設定核心放棄tcp連線之前向客戶端傳送syn+ack包的數量,一般賦值為1.

(7)net.ipv4.tcp_syn_retires引數

與上個引數類似,該引數設定核心放棄建立連線之前傳送syn包的數量,一般賦值為1.

4.2針對cpu的nginx配置優化的2個指令

(1)work_process指令

用來設定nginx伺服器的程序數。一般設定和cpu的核心數相同,或者倍數。

(2)work_cou_affinity指令

該指令用來為每個程序分配cou的工作核心。

4.3與網路連線相關配置的4個指令

(1)keepalive_timeout指令

用來設定nginx伺服器與客戶端保持連線的超時時間。有2個設定選項,中間用空格隔開。

第乙個選項指定客戶端與連線保持活動的超時時間,在這個時間之後,伺服器會關閉此連線;

第二個選項可選:指定了使用keep_alive訊息頭保持活動的有效時間,如果不設定它,nginx伺服器不會向客戶端傳送keep_alive訊息頭以保持與客戶端某些瀏覽器的連線,超過設定的時間後,客戶端就可以關閉連線,不需要伺服器關閉了。

(2)send_timeout指令

用於設定nginx伺服器響應客戶端的超時時間,這個超時時間僅針對兩個客戶端和伺服器之間建立連線後,某個活動之間的時間,如果這個時間後客戶端沒有任何活動,nginx伺服器將會關閉連線。

(3)client_header_buffer_size指令

用於設定nginx伺服器允許的客戶端請求頭部的緩衝區大小,預設為1kb.此指令可根據系統分頁大小來設定。獲取分頁大小的命令:getconf pagesize

nginx出現400錯誤,很大一部分情況是客戶端的請求頭部過大造成的。設定請求頭部大小:

client_header_buffer_size 4k;

(4)multi_accept指令

用於配置nginx伺服器是否盡可能多的接收客戶端的網路連線請求。預設值為off.

4.4與事件驅動模型相關的配置的8個指令

(1)use指令

用於指定nginx伺服器使用的事件驅動模型;

(2)worker_connections指令

用於設定nginx伺服器的每個工作程序允許同時連線客戶端的最大數量。

client=worker_processes * worker_connections/2.

(3)worker_rlimit_sigpending指令

用於設定linux 2.6.6版本之後linux平台的事件訊號佇列長度上限。它主要影響事件驅動模型中rtsig模型可以儲存的最大訊號數。

(4)devpoll_changes和devpoll_events指令

用於設定在/dev/poll事件驅動模型下nginx伺服器可以與核心之間傳遞事件的數量。前者設定傳遞給核心的事件數量,

後者設定從核心獲取的事件數量。預設值為32

(5)kqueue_changes和kquue_events指令

用於設定在kqueue事件驅動模型下nginx伺服器可以與核心之間傳遞事件的數量。前者設定傳遞給核心的事件數量,

後者設定從核心獲取的事件數量。預設值為512.

(6)epoll_events指令

用於設定在epoll事件驅動模型下nginx伺服器可以與核心之間傳遞事件的數量。預設值為512.

注意:與其他事件驅動模型不同,epoll模型下nginx伺服器向核心傳遞事件的數量和從核心獲取的事件數量是相等的。所以,

不存在epoll_changes指令。

(7)rtsig_signo指令

用於設定rtsig模式使用的2個訊號中的第乙個,第二個訊號是在第乙個訊號的編號上加1.預設的第乙個訊號設定為:

sigrtmin+10

(8)rtsig_overflow_*指令

該指令有3個具體的指令,rtsig_over_events、r

tsig_over_test、r

tsig_over_threshold指令。這些指令用來控制當rtsig模式中訊號佇列溢位時nginx伺服器的處理方式。

rtsig_over_events:指定佇列溢位時使用poll庫處理的事件數,預設值為16.

tsig_over_test:指定poll庫處理完第幾件事後將清空rtsig模型使用的訊號佇列,預設值為32.

tsig_over_threshold:指定rtsig模式使用的訊號佇列中的事件超過多少時就需要清空佇列了。該指令只對linux 2.4.x以下版本有效。

Nginx高效能WEB伺服器詳解

與root 功能的差別 案例 3 正規表示式 regular expression 匹配location 字尾匹配 匹配任何字尾檔名gif jpg jpeg png css js ico m3u8 ts結尾的請求 ts 檔案匹配m3u8 檔案匹配nginx.conf 配置資訊location gif...

高效能web伺服器nginx簡介

nginx是乙個高效能的http和反向 伺服器軟體,是imap pop3 smtp 伺服器 1,nginx的組成和工作原理 nginx由核心和模組組成 核心 設計微小簡潔 工作,通縮查詢配置檔案將客戶端請求對映到乙個location block,location是nginx配置的乙個命令,用於url...

《Nginx高效能Web伺服器詳解》

第1章 nginx初探 第2章 nginx伺服器的安裝部署 第3章 nginx伺服器架構初探 第4章 nginx伺服器的高階設定 第5章 nginx伺服器的gzip壓縮 第6章 nginx伺服器的rewrite功能 第7章 nginx伺服器的 服務 第8章 nginx伺服器的快取機制 第9章 ngi...