Tcp

被“TCP:時間等待桶表溢出”錯誤淹沒——我能做些什麼來緩解?

  • October 26, 2016

我有一個執行 Debian 7 (proxmox) 託管 OpenVZ 容器的遺留系統,我看到一個麻煩的問題,即係統被與執行 apache 前端的 VZ 容器的開放連接所淹沒。

發生這種情況時,伺服器上的日誌會充滿數千個“TCP:時間等待桶表溢出 (CT233)”錯誤。這與來自網路伺服器的緩慢響應相結合。我能做些什麼來緩解這個問題嗎?

在Google搜尋之後,我對各種 conntrack 設置進行了一些調整,但如果沒有更好地了解可能產生的影響(或者,實際上,這是否真的可能有助於任何情況)

為了了解情況是什麼,這是今天發生這種情況時“sysctl -a | grep conntrack”的輸出:

net.netfilter.nf_conntrack_generic_timeout = 480
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
net.netfilter.nf_conntrack_tcp_timeout_established = 345600
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
net.netfilter.nf_conntrack_tcp_loose = 1
net.netfilter.nf_conntrack_tcp_be_liberal = 0
net.netfilter.nf_conntrack_tcp_max_retrans = 3
net.netfilter.nf_conntrack_udp_timeout = 30
net.netfilter.nf_conntrack_udp_timeout_stream = 180
net.netfilter.nf_conntrack_icmp_timeout = 30
net.netfilter.nf_conntrack_acct = 0
net.netfilter.nf_conntrack_events = 1
net.netfilter.nf_conntrack_events_retry_timeout = 15
net.netfilter.nf_conntrack_max = 131072
net.netfilter.nf_conntrack_count = 128397
net.netfilter.nf_conntrack_buckets = 32768
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_log_invalid = 0
net.netfilter.nf_conntrack_expect_max = 256
net.nf_conntrack_max = 131072

這包括我今天所做的一些更改:我將 nf_conntrack_buckets 從 16384 翻倍到 32768,我將 conntrack_generic_timeout 從 600s 縮小到 480s,並將 conntrack_tcp_timeout_builted 從 5d 縮小到 4d。

在任何給定時間,絕大多數打開的連接都在 TIME_WAIT 中。

我希望有比我推薦的更了解 TCP/核心調整的人。

謝謝!

我最終調整了另外兩個變數,將它們中的每一個加倍:“net.ipv4.tcp_max_tw_buckets”和“net.ipv4.tcp_max_tw_buckets_ub”,並且由於進行了這些更改,“時間等待桶表溢出”錯誤沒有再次發生。但是,我將在接下來的一周左右的時間裡密切關注它,看看這是否真的解決了這個問題。

引用自:https://serverfault.com/questions/810000