2026. 6. 22. 15:51ㆍ백엔드/리눅스
1. 내 PC 또는 회사망에서 테스트
curl -o /dev/null -s -w \
"DNS:%{time_namelookup}\nConnect:%{time_connect}\nTLS:%{time_appconnect}\nTTFB:%{time_starttransfer}\nTotal:%{time_total}\n" \
<https://도메인/>

| 항목 | 의미 |
| DNS 높음 | DNS/네임서버 문제 |
| Connect 높음 | 네트워크/방화벽/서버 TCP 응답 지연 |
| TLS 높음 | SSL 핸드셰이크 지연 |
| TTFB 높음 | 웹서버/PHP/DB 처리 지연 |
| Total만 높음 | 이미지/JS/CSS 등 리소스 용량 문제 가능 |
정리
TTFB가 높으면 서버/PHP/DB,
Total만 높으면 프론트 리소스,
Connect/TLS가 높으면 네트워크/SSL/방화벽 쪽 문제.
*참고: Curl 순서
- DNS 조회
- TCP 연결
- SSL 핸드셰이크
- 웹 응답(TTFB)
*참고: 조회시
도메인 입력
↓
DNS 조회
↓
IP 획득
↓
TCP 연결
↓
SSL
↓
페이지 로딩
<정상>
DNS: 0.01~0.1
Connect: 0.01~0.1
TLS: 0.05~0.3
TTFB: 0.1~1
<비정상>
DNS: 11.520
Connect: 11.520
TLS: 0.000
TTFB: 0.000
Total: 12.062
→ DNS 조회 단계에서 이미 11초 이상 소요되고 있음.
→ 그런데 사진상에는 TLS 가 0 이다 (0.1 도 아니고) 즉,….
“DNS 조회 후 HTTPS 연결 자체가 제대로 성립되지 못한 것” 일 확률이 높다고 판단함.


time nslookup www.xxx.com

→ 여기서 11초 가까이 걸리면 DNS 문제 확정이었으나, 2초로 끝남. 이 문제는 아니었다.
그렇다면, “DNS 서버 자체가 불안정한가?”
아래 스크립트를 5회 정도 반복실행하며 비교
for i in {1..5}
do
dig www.xxx.com | grep "Query time"
done
for i in {1..5}
do
nslookup www.xxx.com

→ 결과는 사진처럼 정상 범위였음. 즉, DNS 서버 자체 문제는 아님.
그런데, dig 는 정상인데 getent 는 응답이 없었다 !!!
dig www.xxx.com
getent hosts www.xxx.com
→ DNS 서버 문제가 아닌 리눅스의 이름해석(Name Resolution) 설정 문제
dig/nslookup 명령의 경우: DNS 서버 직접 질의. /etc/nsswitch.conf 영향을 거의 안 받음.
curl/ping/getent 경우: curl → glibc resolver → nsswitch.conf → DNS 순이므로 영향을 받음.
그리하여, 아래 조치를 취하여 해결 하였다.
<변경 전>
사이트 접속 → ns1.xxx.co.kr 조회 필요 → ns1.xxx.co.kr IP 조회 → DNS 질의 → 응답
<변경 후>
사이트 접속 → 111.222.333.444 에 직접 질의 → 응답
원인
1. 네임서버 FQDN 등록 문제 : 자체 조회가 느리거나 실패
2. DNS 순환 참조
domain.com → ns1.domain.com → domain.com 식으로 DNS를 또 물어봄
3. 특정 DNS 서버 응답 지연
은 살아있는데 A 레코드 조회가 몇 초씩 걸림. IP 직접 입력하면 우회됨.
⇒ 해당 문제로 해결되어 IP를 직접 입력하여 해결 하였다.
기타 점검 항목
2. 서버에서 부하 확인
top
uptime # Load Average가 CPU 코어 수보다 높으면 서버 부하 의심.
free -m # 메모리 부족 + swap 사용 많으면 느려질 수 있음.
df -h # 디스크 90% 이상이면 위험
→ 확인 결과 부하 문제는 아니었다.
3. 웹 로그 실시간 확인
tail -f /opt/apm/apache/logs/access_log
tail -f /opt/apm/apache/logs/error_log
tail -f /var/log/httpd/access_log
tail -f /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
→ 접속할 때 로그가 늦게 찍히면 서버 처리 지연 가능성이 큼
4. 느린 요청 찾기
tail -n 1000 /opt/apm/apache/logs/access_log | awk '{print $1,$4,$7,$9,$10}' | tail
5. DB 의심 시
mysqladmin processlist
mysqladmin status
SHOW FULL PROCESSLIST;
→ Sleep 말고 Query가 오래 떠 있으면 DB 병목 가능성
→ 페이지 진입 시점부터 느려지므로 DB 문제는 아니라고 판단
'백엔드 > 리눅스' 카테고리의 다른 글
| SMTP 연동 실패 해결방법 (0) | 2026.06.29 |
|---|---|
| RAID 복구하기 (0) | 2026.06.27 |
| 리눅스 :: 파티션과 디스크, 부트로더 (0) | 2025.09.12 |
| 리눅스 :: 라이선스 (0) | 2025.09.12 |
| 리눅스 :: 기출문제 (0) | 2025.09.11 |