[Linux] 네트워크 부하 관리하기

 네트워크 부하 관리





연결은 살아 있지만 네트워크 부하가 커지는 문제를 다뤄 보겠습니다 . 
일반적인 데스크톱에서 내려받는 시간이 정상적인 경우 보다 오래 걸리거나 실패 할때 네트워크 부하가 용량을 넘었는지 확인할 수 있습니다 . 이러한 증상의 여러가지 원인을 조사하는 방법을 알아 보겠습니다 .





대역폭 측정 (iftop) 


top과 마찬가지로 iftop 명령어는 네트워크 인터페이스를 통과하는 활동이 가장 왕성한 리소스를  계속 업데이트 하면서 보여줍니다 . 
iftop -i eth0 형태로 명령을 호출 합니다 . 

iftop 패키지 설치
 
#yum -y install iftop 


대역폭 측정 

#iftop -i eth0 



























iftop은 컴퓨터와 원격 호스트간의 네트워크 연결과 이연결이 사용하는 대역폭을 나타냅니다 . 
예기치않게 누수되는 트래픽을 발견할 수 있고 심지어는 숨어있던 악성코드가 해커에게 연결되는것도 iftop이 잡아냅니다 . 



nethogs


PID 로 로컬 프로세스들을 관리해야 할때는 iftop이 아닌 nethogs를 사용합니다 . 
네트워크 인터페이스를 지정해 nethogs 명령을 실행하면 됩니다. 
iftop과 마찬가지로 nethogs를 설치합니다 


nethogs 설치 

#yum -y install nethogs 



eth0을 지정하여 nethogs 실행
 
# nethogs eth0




해결책 


문제를 일으키는 시스템 프로세스를 찾아낸 후에는 이 프로세스를 어떻게 할지 결정해야 합니다 . 
중요하지 않거나 악성코드 프로세스르면 systemctl, kill, killall등으로 프로세스를 종료 시키면 됩니다 . 
더 정교한 해결책으로 트래픽 셰이핑이라는 방법이 있는데 그것에 대해서도 알아보겠습니다 . 

tc 로 네트워크 트래픽 제어하기 

특정 서비스를 완전히 종료하는 대신 프로세스에 대역폭 상한선을 지정하는 방법입니다 . 
앞서 프로세스의 리소스 사용을 제어하는데 nice를 사용한것과 같이 대역폭을 관리할 수 있어서 한정된 대역폭을 시스템 전반에 전략적으로 분배합니다 . 



tc의 사용 

다음 명령어로 모든 트래픽을 100밀리초 지연하는 규칙을 추가할 수 있습니다 . 

# tc qdisc add dev eth0 root netem delay 100ms 


다음 명령어로 tc 규칙을 나열합니다 . 

#tc -s qdisc ls dev eth0




규칙 확인 

다음 규칙이 제대로 적용되는지 ping명령어를 실행하고 time 값을 확인합니다 . 



규칙 삭제 

#  tc qdisc del dev eth0 root