IPV4的內核7個引數的配置優化
將下面的內核引數得到值追加到Linux系統的/etc/sysctl.conf
/sbin/sysctl -p
- net.core.netdev_max_backlog引數
該引數表示當每個網路介面接收資料包的速率比內核處理這些資料包的速率快時,允許發送到佇列的資料包的最大數目,
net.core.netdev_max_backlog = 262114
- net.core.somacconn引數
該引數用于調節系統同時發起的TCP連接數,默認為128,
該值過小時可能導致連接超時或重傳問題,
net.core.somaxconn = 262144
- net.ipv4.tcp_max_orphans引數
該引數用于設定系統中最多允許存在多少TCP套接字不被關聯到任何一個用戶檔案句柄上,若超過,沒有與用戶檔案相關聯的TCP套接字將被立即復位(防止簡單的DOS攻擊),系統記憶體充足時,可以增大這個引數,
net.ipv4.tcp_max_orphans = 262144
- net.ipv4.tcp_max_syn_backlog引數
該引數用于記錄尚未收到客戶端確認資訊的連接請求的最大值,
系統記憶體充足時,可以增大這個引數,
net.ipv4.tcp_max_syn_backlog= 262144
- net.ipv4.tcp_timestamps引數
該引數用于設定時間戳,避免序列號的卷繞,
對于Nginx服務器,建議將其關閉,
net.ipv4.tcp_timestamps = 0
- net.ipv4.tcp_synack_retries引數
該引數用于設定內核放棄TCP連接之前向客戶端發送SYN+ACK包的數量,
主要影響三次握手的第二次握手發送SYN附帶一個回應前一個SYN的ACK,
net.ipv4.tcp_synack_retries = 1
- net.ipv4.tcp_syn_retries 引數
設定內核放棄建立連接之前發送SYN包的數量,
net.ipv4.tcp_syn_retries = 1
CPU中Nginx配置優化的2個指令
- worker_processes指令
用來設定Nginx服務的行程數,
最好賦值為機器CPU的倍數,
舉個例子,雙核CPU建議設定為2或4.
worker_processes = 4
- worker_cpu_affinity指令
該指令用來為每個行程分配CPU的作業內核,
圖片以4個CPU作業數來演示:
worker_cpu_affinity 0001 0100 1000 0010;
與網路相關配置的四個指令
- keepalive_timeout指令
用于設定Nginx服務器與客戶端保持連接的超時時間,
該指令有兩個選項,第一個指定了客戶端連接保持活動的超時時間,此時間后,服務器會關閉此連接;第二個選項指定了Keep_Alive訊息頭保持與客戶端某些服務器的連接,超過此時間后,客戶端可以關閉連接,
keepalive_timeout 60 50;
- send_timeout指令
用于設定Nginx服務器回應客戶的超時時間,建立連接后,在此時間內客戶端沒有任何活動,Nginx服務器將會關閉連接,
send_timeout 10s;
- client_header_buffer_size指令
設定Nginx服務器允許客戶端請求頭部的緩沖區大小,可以根據系統的分頁大小來設定,
獲取分頁大小
getconf PAGESIZE
設定此緩沖區大小
client_header_buffer_size 4k;
服務器回傳400錯誤的部分原因:請求的頭部過大,
- multi_accept指令
用于配置Nginx服務器是否盡可能多的接收客戶端的網路連接請求,
與事件驅動模型相關的配置
- use指令
用于指定Nginx服務器使用的事件驅動模型, - worker_connections指令
設定服務器的每個作業行程允許同時連接客戶端的最大數量,
計算公式為 client = worker_processes * worker_cennections / 2
worker_connections number
此指令與Linux系統行程可以打開的檔案句柄數量有關,
worker_connections的大小不能超過open file resource limit的賦值,
#查看系統的open file resource limit
cat /proc/sys/fs/file-max
#設定open file resource limit的值
echo "2390251" > /proc/sys/fs/file-max; sysctk -p
- worker_rlimit_sigpending指令
設定事件佇列長度上限值,主要影響事件驅動模型中rtsig模型可以保存的最大信號數,若上限,服務器會自動轉用poll模型處理未處理的客戶端請求,
worker_rlimit_sigpending limit;
- devpoll_changes 和 devpoll_events指令
設定/dev/poll事件驅動模型下服務器可以與內核之間傳遞事件的數量,前者設定傳遞給內核的事件數量,后者設定從內核中獲取的事件數量,
devpoll_changes number
devpoll_changes number
- kqueue_changes 和 kqueue_events指令
設定在kqueue事件驅動模型下服務器可以與內核之間傳遞事件的數量,
kqueue_changes number
kqueue_events number
- epoll_events 指令
用于設定在epoll事件驅動模型下服務器可以在內核之間傳遞事件的數量,
epoll_cahnges number
- rtsing_signo指令
設定rtsig模式使用的兩個信號的第一個,第二個信號是在第一個信號的編號上加1.
rtsig_signo signo
- rtsing_overflow_* number指令
包括三個具體的指令:rtsing_overflow_events rtsing_overflow_test rtsing_overflow_threshold,控制當rtsig模式中信號佇列溢位時服務器的處理方式,
rtsig_overflow_* number
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240501.html
標籤:其他
上一篇:BUUCTF pwn qctf_2018_dice_game
下一篇:執行緒同步
