ipv4指令優化以及Invalid argument錯誤解析linux
2017年08月11日 11:34:05nginx
閱讀數:399網絡
爲了使nginx中ipv4優化參數長久生效,能夠將參數設置追加到/etc/sysctl.conf文件中。併發
net.core.netdev_max_backlog = 262144
用於設置內核沒法及時處理網絡接口收到的數據包時容許發送到隊列的最大數據包數目,默認爲128(不一樣linux系統會存在差別)。tcp
net.core.somaxconn = 262144
用於設置系統同時發起的TCP鏈接數,數值較小時,沒法應付高併發情形,致使鏈接超時、重傳等問題。函數
net.ipv4.tcp_max_orphans = 262144
用於設置最多容許多少TCP套接字不被關聯到用戶文件句柄。一旦超過該數值,沒有關聯到文件句柄的TCP套接字將會被複位,同時給出警告信息。在系統內存充足的狀況下可增大該值。高併發
net.ipv4.tcp_max_syn_backlog = 262144
用於設置還沒有收到客戶端確認信息的鏈接請求的最大值,在系統內存充足的狀況下可增大該值。大數據
net.ipv4.tcp_timestamps = 0
用於設置時間戳,賦值爲0意味着禁用TCP時間戳的支持。優化
net.ipv4.tcp_synack_retries = 1
用於設置內核放棄TCP鏈接以前向客戶端發送SYN+ACK包的數量,設置的是TCP三次握手中的第二次握手,通常設置爲1.spa
net.ipv4.tcp_syn_retries = 1
與net.ipv4.tcp_synack_retries參數相似,用於設置內核放棄TCP鏈接以前向客戶端發送SYN包的數量。
/sbin/sysctl -p
使用上述指令,將會是/etc/sysctl.conf中的修改生效。不過此時會提示一個問題:「sysctl: setting key ‘net.core.somaxconn’: 無效的參數」,產生這個錯誤的緣由在於net.core.somaxconn參數的值在inet_listen()函數中設置爲不該該超過USHRT_MAX,即65535,而上述配置中使用的262144遠遠超過了上限,於是提示問題,解決方法以下:
net.core.somaxconn = 65535
指令生效後,會提示以下信息:
root@**-VirtualBox:/home# /sbin/sysctl -p net.core.netdev_max_backlog = 262144 net.core.somaxconn = 65535 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1