天天看點

Nginx優化

優化核心TCP選項

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.ip_local_port_range = 1024 65534

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_syncookies = 1 

net.core.somaxconn = 262144

net.core.netdev_max_backlog = 262144

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_max_syn_bcaklog = 262144

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries =  1

net.ipv4.tcp_syn_reries = 1

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_keepalive_time = 30

核心優化詳解

net.ipv4.tcp_max_tw_buckets

預設值:180000  設定timewait的值

net.ipv4.ip_local_port_range

預設值:32768-61000  設定允許系統打開的端口範圍

net.ipv4.tcp_tw_recycle

預設值:0  該參數用于設定是否啟用timewait快速回收

net.ipv4.tcp_tw_reuse

預設值:0  該參數用于設定是否開啟重新使用,即允許将TIME-WAIT sockets重新用于新的TCP連接配接

net.ipv4.tcp_syncookies

預設值:0  該參數用于設定是否開啟SYN cookies,如果啟用該功能,那麼當出現SYN等待隊列溢出時,則使用cookies來處理

net.core.somaxconn

預設值:32768  Web應用中listen函數的backlog預設會将核心參數的net.core.somaxconn限制到128,而NGINX定義的NGX_LISTEN_BACKLOG預設值為511,是以有必要調整這個值

net.core.netdev_max_backlog

預設值:300 該參數用于設定被輸送到隊列資料包的最大數目,在網卡接收資料包的速率比核心處理資料包的速率比核心處理資料包的速度快時,那麼會出現排隊現象,這個參數就是用于設定該隊列的大小

net.ipv4.tcp_max_orphans      

預設值:32768  該參數用于設定系統中最多允許存在多少TCP套接字不被關聯到任何一個使用者檔案句柄上,如果超過這個數

字,沒有與使用者檔案句柄關聯的TCP套件字将立即被複位,同時給出警告資訊,這個限制隻是為了防止簡單的DOS攻擊,一般在系統記憶體比較充足的情況下可以增大這個參數 的指派。

net.ipv4.tcp_max_syn_bcaklog

    預設值:1024   該參數用于記錄尚未收到用戶端确認資訊的連接配接請求的最大值,對于擁有128M的記憶體的系統而言,此參數的預設值為1024,,一般在系統記憶體比較充足的情況下,可以增大這個參數的指派。

net.ipv4.tcp_timestamps     

預設值:1 該參數用于設定時間戳,這可以避免序列号被重複使用,在高速、高并發的環境中這種情況是存在的,通過時間戳能讓這些看做是異常的資料包被核心接收,将該參數的值設定為o,表示關閉該功能

net.ipv4.tcp_synack_retries

預設值:5 用于設定SYN重試的次數,在TCP的3次握手中的第2次握手,核心需要發送一個回應前面一個SYN的ACK的SYN,就是說為了打開對方的連接配接,核心發出的SYN的次數,減少該參數的值有利于避免DDOS功能

net.ipv4.tcp_syn_reries

預設值:5 用于設定在核心放棄建立連接配接之前發送SYN包的數量

net.ipv4.tcp_fin_timeout

預設值:60  表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀态的時間對端可以出錯并永遠不關閉連接配接

net.ipv4.tcp_keepalive_time

預設值:7200  當啟用keepalive的時候,該參數用于設定TCP發送keepalive消息的額度

     本文轉自812374156 51CTO部落格,原文連結:http://blog.51cto.com/xiong51/1953407,如需轉載請自行聯系原作者

繼續閱讀