base

네트워크 성능 분석

애플리케이션 코드에는 문제가 없는데도 사용자가 서비스에서 데이터를 정상적으로 받지 못하는 상황이 종종 발생합니다. 대부분의 경우, 이런 문제의 근본 원인은 네트워크 병목 현상으로 인한 것입니다. 네트워크 병목 현상은 전체 시스템 성능에 부정적인 영향을 미치므로, 원인을 정확히 분석하고 신속히 해결하는 것이 중요합니다. 다음과 같은 원인들이 주로 네트워크 병목 현상을 유발합니다.

  • 네트워크 대역폭 부족
  • 네트워크 토폴로지 구성 문제
  • CPU 또는 메모리 사용률 과부하
  • 잘못 설정된 네트워크 구성

네트워크 문제가 의심되는 상황에서는 아래와 같은 명령어를 통해 빠르게 진단하고 원인을 분석할 수 있습니다.

4-1. Ping 명령어

ping 명령어는 특정 서버나 호스트와의 네트워크 연결 상태와 응답 시간을 확인하는 가장 기본적인 도구입니다. ICMP Echo Request를 보내고 응답 속도를 통해 네트워크 상태를 진단합니다.

사용 예시

ping
// 횟수 4번 제한
$ ping -c 4 google.com

결과 예시

$ ping google.com
PING google.com (142.250.206.238): 56 data bytes
64 bytes from 142.250.206.238: icmp_seq=0 ttl=116 time=36.298 ms
64 bytes from 142.250.206.238: icmp_seq=1 ttl=116 time=35.797 ms
64 bytes from 142.250.206.238: icmp_seq=2 ttl=116 time=37.942 ms
64 bytes from 142.250.206.238: icmp_seq=3 ttl=116 time=36.294 ms
64 bytes from 142.250.206.238: icmp_seq=4 ttl=116 time=35.885 ms

결과의 응답 시간이 짧고 일정하면 네트워크가 안정적인 상태이며, 응답 시간이 길거나 패킷 손실이 발생할 경우 네트워크 문제를 추가로 조사할 필요가 있습니다.

4-2. Netstat 명령어

netstat는 시스템의 네트워크 연결 상태와 열려있는 포트 정보를 확인하는 명령어입니다. 활성화된 서비스와 연결 상태를 빠르게 파악하는 데 매우 유용합니다.

사용 예시

netstat
// 3000번 포트가 사용중인지 확인
$ netstat -an | grep 3000
tcp46      0      0  *.3000                 *.*                    LISTEN
 
// tcp Listen 포트가 모두 출력
$ netstat -lnt

이 명령어를 통해 서비스가 정상 작동 중인지, 혹은 예상치 못한 연결이 존재하는지를 확인하여 비정상적인 상태를 빠르게 식별할 수 있습니다. 자주 사용하는 옵션은 아래와 같습니다.

  • netstat -nap : 연결을 기다리는 목록과 프로그램을 표출합니다.
  • netstat -an | grep 포트번호 : 특정 포트가 사용 중인지 확인가능 합니다.
  • netstat -nlpt : TCP listening 상태의 포트와 프로그램을 표출합니다.
  • netstat -anb : 자세한 라이브러리까지 보여주어 유용성이 커 보이지만 결과를 호출하는 시간이 오래걸려서 아래의 ano를 주로 사용합니다..
  • netstat -ano : -anb 대용으로 사용되어서 PID를 표시합니다.
  • netstat 명령어 뒤에 3과 같은 숫자를 붙이면 3초에 한 번씩 반복되어 결과를 표출합니다.

4-3. Nslookup 명령어

nslookup은 DNS(Domain Name System) 조회를 통해 도메인 이름과 IP 주소의 매핑 정보를 확인할 수 있게 합니다. DNS 문제나 도메인 해석 오류 진단에 특히 유용합니다.

사용 예시

조회 시 http, https와 같은 프로토콜을 포함하지 않아야 합니다.

nslookup
nslookup google.com

결과 예시

Server:   ***.***.***.***
Address:  ***.***.***.***#53
 
Non-authoritative answer:
Name:	google.com
Address: 142.250.206.238

이 결과는 DNS 서버가 정상적으로 동작하고 있으며 도메인 이름이 올바르게 해석되고 있음을 나타냅니다. 아래와 같이 -type 옵션을 통해 원하는 레코드 타입을 조회 가능합니다.

nslookup
nslookup -type=[RECORD_TYPE] [DOMAIN]
nslookup -type=mx tistory.com
  • A 레코드(-type=a) : 도메인 이름을 IPv4 주소로 매핑하는 가장 기본적인 레코드 타입이며, -type 옵션이 생략되었을 때 A 레코드로 조회됩니다. MX 레코드(-type=mx) : 해당 도메인에 대한 메일 교환 서버(Mail eXchanger) 정보를 반환합니다.
  • NS 레코드(-type=ns) : 해당 도메인을 관리하는 DNS 서버 정보를 반환합니다.
  • TXT 레코드(-type=txt) : 도메인에 대한 설명이나 SPF와 같은 도메인 인증 정보를 텍스트로 반환합니다.
  • CNAME 레코드(-type=cname) : 도메인의 별칭을 입력하면 원 도메인 정보를 반환합니다.

4-4. Tracert(Traceroute) 명령어

tracert(또는 traceroute)는 네트워크 패킷이 목적지에 도달하기까지 거치는 모든 경로와 각 단계에서 소요되는 응답 시간을 확인할 수 있는 명령어입니다.

사용 예시

traceroute
$ traceroute -I google.com
traceroute to google.com (142.250.206.238), 64 hops max, 72 byte packets
 1  myrouter (***.***.***.***)  3.621 ms  3.237 ms  2.973 ms
 2  ***.***.***.*** (***.***.***.***)  6.349 ms  3.916 ms *
 3  ***.***.***.*** (***.***.***.***)  4.277 ms  4.365 ms  5.378 ms
 4  ***.***.***.*** (***.***.***.***)  4.951 ms  4.147 ms  4.650 ms
 5  ***.***.***.*** (***.***.***.***)  10.757 ms  21.561 ms  10.925 ms
 6  ***.***.***.*** (***.***.***.***)  10.383 ms  11.227 ms  11.848 ms
 7  72.14.202.136 (72.14.202.136)  38.670 ms  35.194 ms  35.539 ms
 8  209.85.245.105 (209.85.245.105)  35.647 ms  36.431 ms  35.802 ms
 9  108.170.248.188 (108.170.248.188)  43.146 ms  34.761 ms  34.591 ms
10  72.14.234.67 (72.14.234.67)  34.843 ms  35.008 ms  37.373 ms
11  142.250.58.92 (142.250.58.92)  38.362 ms  36.649 ms  37.958 ms
12  142.250.57.113 (142.250.57.113)  36.498 ms  37.410 ms  36.457 ms
13  142.250.58.193 (142.250.58.193)  37.762 ms  38.512 ms  36.785 ms
14  kix06s10-in-f14.1e100.net (142.250.206.238)  36.435 ms  37.261 ms  38.782 ms

기본적으론 traceroute는 목적지에 도달하기 위한 경로를 최대 30개까지 표시한다. 출력에는 게이트웨이 이름, IP 주소, 그리고 3번의 왕복시간을 표시한다. 일부 네트워크에서 ICMP 대신 UDP/TCP trace 필요 합니다.

traceroute -I google.com   # ICMP
traceroute -T google.com   # TCP

위와 같은 결과를 통해 특정 지점에서 과도한 지연이나 문제가 발생하고 있는지 명확히 진단할 수 있으며, 네트워크 성능 저하의 정확한 위치를 파악하는 데 유용합니다.

결론 및 추가적인 팁

소개된 네 가지 명령어(ping, netstat, nslookup, tracert)를 활용하면 네트워크 상태를 신속하고 정확하게 분석하여 서비스 품질을 높일 수 있습니다. 정기적으로 이러한 명령어를 통해 네트워크 상태를 점검하고, 전문적인 네트워크 모니터링 툴과 함께 사용하면 더욱 효과적으로 네트워크 성능을 관리하고 장기적인 시스템 안정성을 확보할 수 있습니다.