linux 伺服器丟包故障排查

2022-06-02 14:57:21 字數 2320 閱讀 2148

專案開了個p2p伺服器,但是執行一段時間就會出現丟包問題,具體表現為:

1、udp丟包嚴重(一分鐘收發分別1.5w)

2、ssh(用於運維指令)連線不上該伺服器(超時)

3、伺服器執行好像沒什麼異常,udp假連線數比tcp連線數少(正常應該相近)

首先開始懷疑是不是客戶端有bug,查log發現某段時間有個別客戶端發大量心跳包,開始懷疑這個原因導致服務異常。在多次關服開服後沒出現這個問題,但是伺服器執行一段時間依舊出現上述異常,排除這個原因。

既然不是客戶端導致的。。

就開始在自身找原因,接著懷疑是不是最大連線數、最大檔案開啟數,查了一下伺服器設定:

ulimit -n  //可以開啟最大檔案描述符的數量

ulimit -a  //顯示當前所有的 limit 資訊

time(seconds) unlimited

file(blocks) unlimited

data(kbytes) unlimited

stack(kbytes) 8192

coredump(blocks) unlimited

memory(kbytes) unlimited

locked memory(kbytes) 64

process 516037

nofiles 65536

vmemory(kbytes) unlimited

locks unlimited

cat /proc/sys/fs/nr_open  //單程序最大檔案限制

cat /proc/sys/fs/file-max  //系統最大檔案限制

lsof -n  //檢視伺服器檔案開啟數資訊

ps -aef  //程序資訊

發現無論是檔案描述符開啟數還是檔案開啟數都沒超標---陷入僵局。

覺得應該是系統某個設定不當導致的,但是又無從查起,查 /car/log/messages 裡面的資訊應該能查到點端倪,可是沒許可權。(dmesg命令好像可以檢視)

後來諮詢其他小組,發現他們也遇到過一樣的問題,問題來自於跟蹤連線表的限制----nf_conntrack/ip_conntrack。

理解nf_conntrack

和調整nf_conntrack_max :nf_conntrack 

工作在 3 

層,支援 ipv4 

和 ipv6

,而 ip_conntrack 

只支援 ipv4

。目前,大多的 ip_conntrack_* 

已被 nf_conntrack_* 

取代,很多 ip_conntrack_* 

僅僅是個 alias

,原先的 ip_conntrack 

的 /proc/sys/net/ipv4/netfilter/ 

依然存在,但是新的 nf_conntrack 

在 /proc/sys/net/netfilter/ 

中,這個應該是做個向下的相容。

nf_conntrack/ip_conntrack 

跟 nat 

有關,用來跟蹤連線條目,它會使用乙個雜湊表來記錄 established 

的記錄。nf_conntrack 

在 2.6.15 

被引入,而 ip_conntrack 

在 2.6.22

被移除,如果該雜湊表滿了,就會出現問題來。

檢視系統預設跟蹤連線表限制:

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max  //最大

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established   //儲存時間

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count  //當前

conntrack_max = ramsize(in bytes)/16384/(arch/32),如32g記憶體可以設定1048576

臨時修改該值:

echo 1048576> /proc/sys/net/ipv4/netfilter/ip_conntrack_max

p2p伺服器重啟後執行恢復正常。

伺服器硬體故障排查

電源故障現象 1 接電源線 電源燈不亮 2 電源指示燈報警 3 電源燈正常 按開機鍵無反應 排查方式 1 檢測電源線的接觸是否有鬆散 2 替換電源測試 3 供電環境檢測 是否存在電壓不穩定 4 檢視事件日誌 主機板故障現象 1 按開機鍵無效,黑屏 2 裝置啟動正常,接顯示器黑屏 3 裝置某些介面或者...

Linux伺服器SSH遠端連線故障排查

ping 10.0.0.7 排查客戶端到伺服器端的線路問題,ping是常用的網路連通性檢查工具 tracert d 10.0.0.7 tracert路由追蹤命令,也可以檢查路是否暢通,d是不進行反向解析 telnet 10.0.0.7 22 判斷ssh伺服器預設的22埠是否開啟 客戶端執行 一看埠是...

(故障記錄)關於多台伺服器丟包現象

現象 發現幾台伺服器服務存在不穩定現象,ping測試發現這幾台伺服器對外都出現丟包現象,丟包率3 5 伺服器為虛擬機器部署在實體伺服器上,一台實體機上部署數個虛擬機器。排查 一,通過arp確認出現問題的伺服器都屬於同乙個實體機,繼續從網路角度排查問題。二,檢查從路由層到服務端全鏈路狀態,介面狀態正常...