AWS/S3 にデータを継続的にコピーしている CentOS 7 マシンがあります。
ただし、問題が発生しているため、デバッグ方法についてアドバイスをいただければ幸いです。
S3 へのコピーは数時間から数日間続き、その後、ネットワークの機能が停止します (cron
ネットワークへの ping と S3 コマンドを 1 分ごとに記録するジョブがある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:
スクリプトを使用しても、ネットワークに障害が発生した場合は復旧されませんでした。
ただし、外部 NIC を追加してスクリプトを拡張し、問題が解決するかどうかを確認しました。
#!/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
しかし、ネットワークを再び機能させる唯一の方法は再起動することです
過去にもこのようなサーバーがありました。
私がやったことは、既知の IP アドレスに ping するタスクを crontab に追加したことです。アクセスできない場合は、ネットワークをシャットダウンし、NIC を担当するカーネル モジュールを削除して ( rmmod module_name
)、再度挿入し ( modprobe module_name
)、最後にネットワークを再起動しました。ぜひお試しください。
もしそれがあなたにとって効果があるなら、ぜひバグを報告。