CentOS 이상한 네트워크 문제를 디버깅하는 방법

CentOS 이상한 네트워크 문제를 디버깅하는 방법

AWS/S3에 지속적으로 데이터를 복사하는 CentOS 7 시스템이 있습니다.
그러나 문제가 있으므로 디버깅 방법에 대한 제안을 주시면 감사하겠습니다.

S3에 대한 복제는 몇 시간/일 동안 지속되고 네트워크가 다운됩니다. (저는 cronS3 명령과 함께 매분 네트워크에 핑을 기록하는 작업을 수행하고 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에 알려진 IP 주소를 ping하는 작업을 추가하는 것뿐이었습니다. 접속이 불가능할 경우 네트워크를 종료하고 NIC를 담당하는 커널 모듈을 제거( rmmod module_name)한 후 다시 삽입( modprobe module_name)한 후 마지막으로 네트워크를 다시 시작합니다. 한번 시도해 보세요.

그것이 당신에게 효과가 있다면, 당신은 반드시 해야 합니다오류 신고.

관련 정보