本篇文章為大家展示了如何提高Linux系統(tǒng)應(yīng)對短連接的負載能力,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)提供從項目策劃、軟件開發(fā),軟件安全維護、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務(wù),主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都做網(wǎng)站,App定制開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。創(chuàng)新互聯(lián)公司深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!在存在大量短連接的情況下,Linux的TCP棧一般都會生成大量的 TIME_WAIT 狀態(tài)的socket。
你可以用下面的命令看到:
netstat -ant| grep -i time_wait
有時候,這個數(shù)目是驚人的:
netstat -ant|grep -i time_wait |wc -l
可能會超過三四萬。這個時候,我們需要修改 linux kernel 的 tcp time wait的時間,縮短之,有個 sysctl 參數(shù)貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,缺省值是 60,也就是60秒,很多網(wǎng)上的資料都說將這個數(shù)值設(shè)置低一些就可以減少netstat 里面的TIME_WAIT狀態(tài),但是這個說法是錯誤的。經(jīng)過認真閱讀Linux的內(nèi)核源代碼,我們發(fā)現(xiàn)這個數(shù)值其實是輸出用的,修改之后并沒有真正的讀回內(nèi)核中進行使用,而內(nèi)核中真正管用的是一個宏定義,在 $KERNEL/include/net/tcp.h里面,有下面的行:
#define TCP_TIMEWAIT_LEN (60*HZ)
而這個宏是真正控制 TCP TIME_WAIT 狀態(tài)的超時時間的。如果我們希望減少 TIME_WAIT 狀態(tài)的數(shù)目(從而節(jié)省一點點內(nèi)核操作時間),那么可以把這個數(shù)值設(shè)置低一些,根據(jù)我們的測試,設(shè)置為 10 秒比較合適,也就是把上面的修改為:
#define TCP_TIMEWAIT_LEN (10*HZ)
然后重新編譯內(nèi)核,重啟系統(tǒng)即可發(fā)現(xiàn)短連接造成的TIME_WAIT狀態(tài)大大減少:
netstat -ant | grep -i time_wait |wc -l
一般情況都可以至少減少2/3,也能相應(yīng)提高系統(tǒng)應(yīng)對短連接的速度。
上述內(nèi)容就是如何提高Linux系統(tǒng)應(yīng)對短連接的負載能力,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。