NGINX高性能Web服務器詳解(讀書筆記)

原文地址:NGINX高性能Web服務器詳解(讀書筆記) 做者:夏寥寥html

第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、rtsig_over_test、rtsig_over_threshold指令。這些指令用來控制當rtsig模式中信號隊列溢出時Nginx服務器的處理方式。
rtsig_over_events:指定隊列溢出時使用poll庫處理的事件數,默認值爲16.
tsig_over_test:指定poll庫處理完第幾件過後將清空rtsig模型使用的信號隊列,默認值爲32.
tsig_over_threshold:指定rtsig模式使用的信號隊列中的事件超過多少時就須要清空隊列了。該指令只對Linux 2.4.x如下版本有效。



nginx

相關文章
相關標籤/搜索