서버 운영
도메인으로 접속할 때 간헐적으로 느릴 때
Nginx 뒤에서 도메인 연결이 불안정하거나 느리다면, DNS 응답, Nginx 설정, 인증서를 순서대로 확인해야 한다.
도메인 연결을 통해 접속하면 가끔 빨라졌다가 느려지는 현상이 있다면, 대부분 DNS 캐시, Nginx 설정, 또는 SSL/TLS 핸드셰이크 문제다.
DNS 응답 속도 확인
dig example.com
dig +trace example.com # 재귀 조회 경로 확인
DNS 응답 시간(Query time)을 본다. 100ms 이상이면 느린 것이다.
특정 DNS 서버로 쿼리하려면:
dig @8.8.8.8 example.com # Google DNS
dig @1.1.1.1 example.com # Cloudflare DNS
HTTP/HTTPS 응답 확인
curl -w "@-" -o /dev/null https://example.com << 'EOF'
time_connect: %{time_connect}
time_starttransfer: %{time_starttransfer}
time_total: %{time_total}
EOF
이 명령어로 각 단계별 시간을 본다:
time_connect: TCP 연결 시간time_starttransfer: 첫 바이트까지의 시간time_total: 전체 시간
Nginx 설정 확인
Nginx 설정 문법이 맞는지 먼저 본다:
sudo nginx -t
Nginx 로그를 본다:
sudo tail -f /var/log/nginx/access.log # 접속 로그
sudo tail -f /var/log/nginx/error.log # 에러 로그
응답 시간이 길거나 에러가 많으면 Nginx 설정 문제일 가능성이 높다.
SSL/TLS 인증서 확인
openssl s_client -connect example.com:443 -showcerts
또는 더 간단하게:
curl -vI https://example.com
연결 시간이 길면 인증서 검증이나 핸드셰이크에 문제가 있을 수 있다.
프록시 규칙 확인
Nginx가 백엔드 서버로 올바르게 프록시하는지 확인한다:
grep -n proxy_pass /etc/nginx/sites-enabled/example.com
프록시 주소가 맞는지, 타임아웃 설정이 적절한지 본다:
proxy_pass http://backend:3000;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
캐시 설정 확인
Nginx 캐시 때문에 이전 데이터가 보일 수도 있다:
proxy_cache_valid 200 10m;
proxy_cache_key $scheme$request_method$host$request_uri;
캐시 무효화:
curl -X PURGE https://example.com/page
동시 접속 수 확인
ss -n | grep ESTABLISHED | wc -l
동시 접속이 많으면 응답이 느려질 수 있다. Nginx 워커 프로세스 수를 조정해야 할 수도 있다:
worker_processes auto; # CPU 코어 수만큼 자동 설정
빠른 진단 순서
- DNS 응답 시간 확인
- curl로 각 단계별 시간 측정
- Nginx 문법 확인
- Nginx 로그에서 느린 요청 찾기
- SSL 인증서 확인
- 프록시 타임아웃 설정 확인
- 캐시 설정 확인
이 순서대로 확인하면 대부분의 도메인 연결 문제를 찾을 수 있다.