Linux實(shí)例NAT哈希表滿導(dǎo)致ECS實(shí)例丟包
發(fā)布時(shí)間:2021-03-30 點(diǎn)擊數(shù):684
問題現(xiàn)象
Linux實(shí)例出現(xiàn)間歇性丟包,無法連接實(shí)例。通過tracert、mtr等工具排查,外部網(wǎng)絡(luò)未見異常。同時(shí),在系統(tǒng)日志中重復(fù)出現(xiàn)大量類似以下錯(cuò)誤信息。
Feb 6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet. Feb 6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet. Feb 6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet. Feb 6 16:05:07 i-*** kernel: nf_conntrack: table full, dropping packet.
原因分析
ip_conntrack是Linux系統(tǒng)內(nèi)NAT的一個(gè)跟蹤連接條目的模塊。ip_conntrack模塊會(huì)使用一個(gè)哈希表記錄TCP協(xié)議“established connection”記錄,當(dāng)這個(gè)哈希表滿之后,便會(huì)導(dǎo)致“nf_conntrack: table full, dropping packet”錯(cuò)誤。Linux系統(tǒng)會(huì)開辟一個(gè)空間,用于維護(hù)每一個(gè)TCP鏈接,這個(gè)空間的大小與nf_conntrack_buckets、nf_conntrack_max參數(shù)相關(guān),后者的默認(rèn)值是前者的4倍,所以一般建議調(diào)大nf_conntrack_max參數(shù)值。
說明:系統(tǒng)維護(hù)連接比較消耗內(nèi)存,請(qǐng)?jiān)谙到y(tǒng)空閑和內(nèi)存充足的情況下調(diào)大nf_conntrack_max參數(shù),且根據(jù)系統(tǒng)的情況而定。
解決方法
- 登錄Linux實(shí)例。
-
執(zhí)行以下命令,編輯系統(tǒng)內(nèi)核配置。
vi /etc/sysctl.conf
- 修改哈希表項(xiàng)最大值參數(shù)net.netfilter.nf_conntrack_max為655350。
- 修改超時(shí)參數(shù)net.netfilter.nf_conntrack_tcp_timeout_established為1200,默認(rèn)情況下超時(shí)時(shí)間是432000秒。
-
執(zhí)行sysctl -p命令,使配置生效。
如果您有其他問題,可以聯(lián)系北京志遠(yuǎn)天成阿里云代理商,為您提供一對(duì)一專業(yè)全面的技術(shù)服務(wù),同時(shí)新老阿里云會(huì)員,均可享受我公司代理商價(jià)格,歡迎咨詢!
