Image

知识库 → Linux 控制台运行缓慢:使用 strace 查找原因

[虚拟服务器]
出版日期: 27.08.2026

控制台运行缓慢通常会给人一种感觉:服务器负载很高,因此命令执行有很大延迟,但事实并非总是如此。

在执行基本命令(例如 toppingiostat)时,控制台响应缓慢还有其他原因。

为了确定延迟的准确原因,我们将使用 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}])

系统调用 poll 的超时时间为 5000 毫秒,未收到 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