Linux 서버를 운영하다 보면 웹 페이지가 느리게 열리거나 SSH 접속이 버벅이고, API 응답 시간이 길어지는 현상을 경험할 수 있습니다. 이러한 문제의 대표적인 원인 중 하나가 바로 High Latency(네트워크 지연) 입니다.
Latency는 패킷이 출발지에서 목적지까지 이동하고 다시 응답을 받기까지 걸리는 시간을 의미합니다. Latency가 높아지면 서비스 응답 속도가 느려지고, 실시간 서비스에서는 끊김 현상이 발생할 수 있습니다.
이번 글에서는 Linux에서 High Latency가 발생하는 원인과 확인 방법, 해결 방법을 실무 중심으로 알아보겠습니다.
High Latency란?
클라이언트와 서버는 다음과 같은 과정을 통해 통신합니다.
Client
↓
Packet 전송
↓
Network
↓
Server
↓
Response
↓
Client
패킷이 왕복하는 시간이 길어질수록 Latency는 증가합니다.
예를 들어 Ping 결과가 다음과 같다면
64 bytes from 8.8.8.8
time=12 ms
왕복 시간이 12ms라는 의미입니다.
반대로
time=350 ms
라면 지연 시간이 매우 높은 상태입니다.
High Latency가 발생하는 주요 원인
대표적인 원인은 다음과 같습니다.
- 네트워크 혼잡(Congestion)
- 회선 품질 저하
- Packet Loss
- 라우팅 우회
- DNS 응답 지연
- 서버 CPU 과부하
- NIC 성능 문제
- MTU 설정 오류
- Docker Overlay Network
- Kubernetes CNI 문제
실무에서는 네트워크 혼잡과 서버 과부하가 가장 흔한 원인입니다.
1. Ping으로 Latency 확인하기
가장 먼저 Ping 시간을 확인합니다.
ping 8.8.8.8
예시
time=8 ms
또는
time=210 ms
평소보다 시간이 크게 증가했다면 지연이 발생한 것입니다.
2. mtr 사용하기
mtr은 지연 구간을 쉽게 확인할 수 있습니다.
mtr google.com
다음 항목을 확인합니다.
- Avg
- Best
- Worst
- Loss%
특정 Hop에서 지연이 급격히 증가하는지 확인합니다.
3. Traceroute 확인하기
경로를 분석합니다.
traceroute google.com
또는
tracepath google.com
불필요하게 먼 경로를 거치는지 확인합니다.
4. Packet Loss 확인하기
Latency는 Packet Loss와 함께 발생하는 경우가 많습니다.
ping -c 100 google.com
Packet Loss가 있다면 TCP 재전송 때문에 응답 시간이 증가합니다.
5. CPU 사용률 확인하기
서버 과부하 여부를 확인합니다.
top
또는
uptime
Load Average가 지나치게 높으면 응답 속도가 느려질 수 있습니다.
6. 인터페이스 상태 확인하기
NIC 오류를 확인합니다.
ip -s link
또는
ethtool eth0
다음 항목을 확인합니다.
- RX errors
- TX errors
- Dropped
- Speed
- Duplex
NIC 오류는 지연 시간을 증가시킬 수 있습니다.
7. tcpdump 분석하기
패킷 흐름을 확인합니다.
tcpdump -i eth0
재전송이 반복되는지 확인합니다.
TCP Retransmission
Duplicate ACK
재전송이 많으면 Latency도 함께 증가합니다.
8. Docker 및 Kubernetes 확인하기
Docker
docker network ls
Kubernetes
kubectl get pods -A
Overlay Network가 병목이 되는지 확인합니다.
9. DNS 응답 시간 확인하기
DNS 조회가 느린 경우 전체 응답 시간이 증가합니다.
dig google.com
다음 항목을 확인합니다.
Query time: 18 msec
Query Time이 지나치게 높다면 DNS 서버도 점검해야 합니다.
10. 로그 확인하기
커널 로그를 확인합니다.
journalctl -k
또는
dmesg | grep -i eth
NIC Reset이나 Driver 오류가 반복되는지 확인합니다.
High Latency 점검 순서
실무에서는 다음 순서대로 점검하는 것이 좋습니다.
- Ping 확인
- mtr 실행
- Traceroute 실행
- Packet Loss 확인
- CPU 사용률 확인
- NIC 상태 확인
- tcpdump 분석
- Docker/Kubernetes 확인
- DNS 응답 시간 확인
- 로그 분석
High Latency 사용 시 주의사항
다음 사항을 고려해야 합니다.
- Packet Loss 여부를 함께 확인한다.
- CPU 과부하도 원인이 될 수 있다.
- DNS 응답 시간도 점검한다.
- MTU와 Duplex 설정도 확인한다.
- Docker Overlay Network도 원인이 될 수 있다.
- 클라우드 환경에서는 리전 간 통신 여부도 확인한다.
Latency는 단순히 인터넷 속도가 느린 문제가 아니라 서비스 응답 속도와 사용자 경험에 직접적인 영향을 주는 중요한 성능 지표입니다.
High Latency와 Packet Loss의 차이
| 항목 | High Latency | Packet Loss |
|---|---|---|
| 의미 | 패킷이 늦게 도착 | 패킷이 도착하지 않음 |
| 영향 | 응답 속도 저하 | 연결 실패 가능 |
| TCP | 느린 응답 | 재전송 발생 |
| 주요 원인 | 혼잡, CPU, 라우팅 | 네트워크 장애, NIC |
Latency는 속도의 문제, Packet Loss는 데이터 손실 문제입니다.
자주 묻는 질문
Ping 시간이 어느 정도면 정상인가요?
같은 데이터센터 내부는 일반적으로 1ms 이하, 국내 서버 간은 5~20ms 정도가 일반적입니다. 해외 서버는 수십~수백 ms가 나올 수 있습니다.
Packet Loss가 없어도 Latency가 높을 수 있나요?
네. 네트워크 혼잡, 라우팅 우회, CPU 과부하, DNS 응답 지연 등으로 인해 패킷 손실 없이도 지연 시간이 증가할 수 있습니다.
Latency를 줄이려면 어떻게 해야 하나요?
불필요한 네트워크 경로를 줄이고, 서버 부하를 낮추며, MTU와 NIC 설정을 최적화하고, 가까운 리전이나 CDN을 사용하는 것이 효과적입니다.
마무리
High Latency는 Linux 서버의 응답 속도와 사용자 경험에 직접적인 영향을 주는 중요한 성능 문제입니다. ping, mtr, traceroute, tcpdump, ethtool 등을 활용하면 지연 구간과 원인을 빠르게 파악할 수 있으며, 네트워크 구성과 서버 성능, DNS 응답 시간을 함께 점검하면 대부분의 지연 문제를 해결할 수 있습니다.