コンソールの動作が遅いと、通常、サーバーが高負荷で動作しているためコマンドの実行に大きな遅延が生じているという印象を与えますが、必ずしもそうではありません。
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

