我有一台 CentOS 7 機器,它不斷地將資料複製到 AWS/S3。
但是,它有一個問題,我將不勝感激有關如何調試的建議。
到 S3 的複製將持續數小時/數天,然後網路將停止運行(我有一項cron
工作每分鐘記錄一次對網路的 ping 操作,以及 S3 命令aws s3 cp
,所以我知道它發生的確切時間)。
在那個階段,NetworkManager
守護程式看起來很好,syslog
並且journalctl -xe
沒有顯示任何異常,但使網路再次運行的唯一方法是重新啟動。
當網路停止正常運作時,該電腦上沒有任何使用者有任何計劃的 (crontab) 作業,該電腦具有靜態 IP,並且直到出現問題時,電腦和網路功能都沒有問題。
關於如何調試這個問題有什麼想法嗎?
編輯1:
根據 Artem Tashkinov 的建議,我為 crontab 添加了每分鐘一次的調用,該腳本執行以下操作:
#!/bin/bash -xv
ping -c1 1.1.1.1 >/dev/null 2>&1
if [ $? -eq 0 ];
then
echo Successful
else
echo Fail
systemctl stop NetworkManager
rmmod r8169
modprobe r8169
systemctl start NetworkManager
fi
我會看看它是否能夠在網路崩潰時恢復網路。
編輯2:
即使有了腳本,網路故障時也沒有恢復。
不過,我增強了腳本,因為我添加了外部網路卡,看看它是否能解決問題。
#!/bin/bash -xv
#
#kernel_module="r8169" # on-board NIC
#kernel_module="e1000e" # add-on NIC
nic=$( ifconfig | grep -B1 10.60.100 | head -1 | awk -F: '{ print $1 }' )
kernel_module=$( ethtool -i $nic | grep driver | awk '{ print $NF }' )
ping -c1 1.1.1.1 >/dev/null 2>&1
if [ $? -eq 0 ];
#if [ $? -ne 0 ];
then
echo Successful
else
echo Fail
systemctl stop NetworkManager
rmmod $kernel_module
modprobe $kernel_module
systemctl start NetworkManager
fi
答案1
但使網路再次正常工作的唯一方法是重新啟動
我以前也有過這樣的伺服器。
我所做的就是在 crontab 中新增一個任務來 ping 一個已知的 IP 位址。如果無法訪問,則關閉網絡,刪除負責 NIC 的核心模組 ( rmmod module_name
) 並再次插入 ( modprobe module_name
),最後再次啟動網絡。請嘗試一下。
如果它對你有用,你絕對應該報告錯誤。