So debuggen Sie ein seltsames Netzwerkproblem bei CentOS

So debuggen Sie ein seltsames Netzwerkproblem bei CentOS

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 cronJob, 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 NetworkManagerscheint der Daemon in Ordnung zu sein syslogund journalctl -xezeigt 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.

verwandte Informationen