Ich habe eine CentOS 7-Maschine, die kontinuierlich Daten nach AWS/S3 kopiert.
Es gibt jedoch ein Problem, für dessen Fehlerbehebung ich dankbar wäre.
Das Kopieren auf S3 würde stunden-/tagelang dauern und dann würde das Netzwerk nicht mehr funktionieren (ich habe einen cron
Job, der jede Minute einen Ping zum Netzwerk sowie den S3-Befehl aufzeichnet aws s3 cp
, sodass ich die genaue Minute kenne, in der es passiert ist).
Zu diesem Zeitpunkt NetworkManager
scheint der Daemon in Ordnung zu sein syslog
und journalctl -xe
zeigt nichts Ungewöhnliches an. Die einzige Möglichkeit, das Netzwerk wieder funktionsfähig zu machen, ist jedoch ein Neustart.
Kein Benutzer auf dieser Maschine hat für die Zeit, in der das Netzwerk nicht mehr normal funktionierte, geplante (Crontab-)Jobs, die Maschine hat eine statische IP und bis zum Auftreten des Problems funktionierten die Maschine und das Netzwerk ohne Probleme.
Irgendwelche Ideen zur Fehlerbehebung bei diesem Problem?
Bearbeitung 1:
Gemäß dem Vorschlag von Artem Tashkinov habe ich jede Minute einen Aufruf eines Skripts zu crontab hinzugefügt, das Folgendes tut:
#!/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
Und ich werde sehen, ob es möglich ist, das Netzwerk wiederzubeleben, wenn es kaputt geht.
Bearbeitung 2:
Selbst mit dem Skript konnte das Netzwerk nach seinem Ausfall nicht wiederbelebt werden.
Ich habe das Skript jedoch erweitert, indem ich eine externe Netzwerkkarte hinzugefügt habe, um zu sehen, ob das Problem dadurch gelöst wird.
#!/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
Antwort1
aber die einzige Möglichkeit, das Netzwerk wieder funktionsfähig zu machen, ist ein Neustart
Ich hatte in der Vergangenheit schon solche Server.
Ich habe eine Aufgabe in die Crontab eingefügt, die eine bekannte IP-Adresse anpingt. Wenn diese nicht erreichbar ist, wurde das Netzwerk heruntergefahren, das für die Netzwerkkarte zuständige Kernelmodul entfernt ( rmmod module_name
) und erneut eingefügt ( modprobe module_name
) und anschließend das Netzwerk neu gestartet. Bitte versuchen Sie es.
Wenn es für Sie funktioniert, sollten Sie es auf jeden Fall tunMelde einen technischen Fehler.