- A 64 bits hardware/kernel (AMD64, Opterons)
- At least 8GB of ram
- A recent linux kernel (2.6.x)
About tuning, I prefer to not fully disclose them because servers are targets of many attacks, so it's better not help hackers.
The most touchy thing is the IP route cache : You have to tune it or else the machine drops many connections
(hint : rhash_entries=... in the boot append string)
hints :
echo 1 > /proc/sys/net/ipv4/route/gc_interval
echo 150 >/proc/sys/net/ipv4/route/gc_timeout
echo 2 >/proc/sys/net/ipv4/route/gc_elasticity
- Use of hugeTLB pages
hint :
echo xxx >/proc/sys/vm/nr_hugepages
Tune tcp :
echo "4096 49152 131072" >/proc/sys/net/ipv4/tcp_wmem
echo xxxx >/proc/sys/net/ipv4/tcp_max_syn_backlog
echo xxxx >/proc/sys/net/core/somaxconn
echo 1200000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
echo 7 >/proc/sys/net/ipv4/tcp_retries2
echo "600000 650000 700000" >/proc/sys/net/ipv4/tcp_mem
echo 0 >/proc/sys/net/ipv4/tcp_timestamps
echo 0 >/proc/sys/net/ipv4/tcp_window_scaling
echo 0 >/proc/sys/net/ipv4/tcp_sack
echo 330000 >/proc/sys/net/ipv4/tcp_max_orphans
echo "10000 62000" >/proc/sys/net/ipv4/ip_local_port_range
others :
echo 1300000 >/proc/sys/fs/file-max
有多種方法加大Linux的threads數
1、sysctl -w kernel.threads-max=8167 最大threads數
2、echo 8167 > /proc/sys/kernel/threads-max
重啟后保存修改值
編輯/etc/sysctl.conf
增加
kernel.threads-max = 8167
#sysctl -p 馬上生效
/proc/sys/net/ipv4/參數說明
參數名 參數類型
參數值(如無特別標注,內存類的單位為byte,關于時間的單位為秒)
官方詳細說明(skylove對該參數的個人心得或補充說明)
ip_forward :BOOLEAN
0 - 關閉(默認值)
非0值 - 打開ip轉發
在網絡本地接口之間轉發數據報。該參數非常特殊,對該參數的修改將導致其它所有相關配置參數恢復其默認值(對于主機參閱RFC1122,對于路由器參見 RFC1812)(在其他一些操作系統中,這個參數不是boolean型,而是INTEGER型,設置為0為不轉發,1為根據接口情形決定是否轉發,2是 始終轉發)
ip_default_ttl :INTEGER
默認值為 64
表示IP數據報的Time To Live值(在網絡傳遞中,每經過一"跳",該值減少1,當ttl為0的時候,丟棄該包.該值越大,即在網絡上可以經過的路由器設備的數量越多,但一個錯 誤的包,也會越發浪費生存周期.根據目前的實際情形而看,設置為32已經足夠普通網絡訪問Internet的需求了)
ip_no_pmtu_disc :BOOLEAN
默認值為FALSE(0)
關閉路徑MTU探測(典型的瓶頸原理,一次成功的傳輸中,mtu是由網絡上最"窄"的位置決定的.如果IP層有一個數據報要傳,而且數據的長度比鏈路層的MTU還大,那么IP層就需要進行分片(fragmentation),把數據報分成若干片,這樣每一片都小于MTU。
新聞熱點
疑難解答