經過調整Linux內核參數提高網絡性能

若是服務器壓力不大,那麼維持默認便可.html

下述內容取材於」Performance Tuning For Linux Server」一書.linux

$ /proc/sys/net/core/wmem_max

最大socket寫buffer,可參考的優化值:873200服務器

$ /proc/sys/net/core/rmem_max

最大socket讀buffer,可參考的優化值:873200網絡

$ /proc/sys/net/ipv4/tcp_wmem

TCP寫buffer,可參考的優化值: 8192 436600 873200socket

$ /proc/sys/net/ipv4/tcp_rmem

TCP讀buffer,可參考的優化值: 32768 436600 873200tcp

$ /proc/sys/net/ipv4/tcp_mem

一樣有3個值,意思是: net.ipv4.tcp_mem[0]:低於此值,TCP沒有內存壓力性能

net.ipv4.tcp_mem[1]:在此值下,進入內存壓力階段.優化

net.ipv4.tcp_mem[2]:高於此值,TCP拒絕分配socket.code

上述內存單位是頁,而不是字節.orm

可參考的優化值是:786432 1048576 1572864

$ /proc/sys/net/core/netdev_max_backlog

進入包的最大設備隊列.默認是300,對重負載服務器而言,該值過低,可調整到1000.

$ /proc/sys/net/core/somaxconn

listen()的默認參數,掛起請求的最大數量.默認是128.對繁忙的服務器,增長該值有助於網絡性能. 可調整到256.

$ /proc/sys/net/core/optmem_max

socket buffer的最大初始化值,默認10K.

$ /proc/sys/net/ipv4/tcp_max_syn_backlog

進入SYN包的最大請求隊列.默認1024.對重負載服務器,增長該值顯然有好處. 可調整到2048.

$ /proc/sys/net/ipv4/tcp_retries2

TCP失敗重傳次數,默認值15,意味着重傳15次才完全放棄.可減小到5,以儘早釋放內核資源.

$ /proc/sys/net/ipv4/tcp_keepalive_time
$ /proc/sys/net/ipv4/tcp_keepalive_intvl
$ /proc/sys/net/ipv4/tcp_keepalive_probes

這3個參數與TCP KeepAlive有關.默認值是:

tcp_keepalive_time = 7200 seconds (2 hours)

tcp_keepalive_probes = 9

tcp_keepalive_intvl = 75 seconds

意思是若是某個TCP鏈接在idle 2個小時後,內核才發起probe. 若是probe 9次(每次75秒)不成功,內核才完全放棄,認爲該鏈接已失效. 對服務器而言,顯然上述值太大. 可調整到:

/proc/sys/net/ipv4/tcp_keepalive_time 1800

/proc/sys/net/ipv4/tcp_keepalive_intvl 30

/proc/sys/net/ipv4/tcp_keepalive_probes 3

$ proc/sys/net/ipv4/ip_local_port_range

指定端口範圍的一個配置,默認是32768 61000,已夠大.

原文:http://butian.org/knowledge/linux/1402.html

相關文章
相關標籤/搜索