콘솔이 느리게 작동하면 일반적으로 서버가 높은 부하 상태에서 실행되어 명령이 큰 지연과 함께 수행된다는 느낌을 주지만, 항상 그런 것은 아닙니다.
top, ping, iostat과 같은 기본 명령을 실행할 때 콘솔 응답이 느린 다른 원인도 있습니다.
지연의 정확한 원인을 파악하기 위해 strace 명령을 사용하겠습니다.
1. 설치
apt install strace
2. 사용 예제
2.1 모두 표시
strace -r top -n 1
2.2 결과 요약
strace -r top -c 1
출력이 너무 많은 정보를 포함하므로 더 간결한 버전을 사용할 수 있습니다:
strace -r -e trace=connect,poll,openat,stat -o top_small.log top -n 1
3. 출력 분석
0.000231 poll([{fd=3, events=POLLIN}], 1, 5000) = 0 (Timeout)
5.003045 poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3, revents=POLLOUT}])
타임아웃이 5000ms인 시스템 호출 poll이 DNS 서버(8.8.8.8)로부터 응답을 받지 못했습니다. 이는 정확히 5초가 걸렸습니다.
5.005113 poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3, revents=POLLOUT}])
첫 번째 직후, top은 동일한 DNS 서버를 사용하여 다시 요청을 시도하고 다시 5초를 기다립니다.
4. 결론
명령 실행 시 10초의 지연은 서버 부하와 관련이 있는 것이 아니라 /etc/resolv.conf에 지정된 DNS 서버의 응답을 오래 기다리기 때문입니다.
Google의 글로벌 DNS를 사용하는 경우, 일부 국가에서 차단될 수 있습니다. 저희의 경우도 그랬습니다. 해당 국가에 있는 다른 DNS로 변경하시면 됩니다.
No Comments Yet

