在 ssh 上执行命令需要很长时间

在 ssh 上执行命令需要很长时间

奇怪的是,在我的 Linux 服务器上,当我尝试通过 ssh 登录并运行命令时,它们会间歇性地花费大约 15-30 秒来执行每个命令。每个命令的执行速度都非常慢。但是,只要命令执行,它就会执行正常功能(我的意思是不会变慢)。

我已经检查过 CPU、RAM、IO、网络,一切正常。那么问题可能是什么呢?

答案1

检查交换内存(free -h)利用率。

如果某些进程消耗大量交换内存,这可能会导致系统运行缓慢,进而需要更多时间来执行命令。

答案2

大多数现代操作系统倾向于在 RAM 中缓存尽可能多的信息。第一次运行命令时,可能需要很长时间才能从磁盘检索所有信息。在后续尝试中,数据已被缓存,运行速度会快得多。您在 DB 服务器上遇到这种情况的一个常见场景是:繁重的 SQL 查询可能需要很长时间才能执行,如果您再次运行查询,则会立即执行,因为数据已经存在。

答案3

由于 /etc/hosts 中自身主机名的名称到 IP 解析错误,我遇到了这种奇怪的效果。出于某些愚蠢的原因,几乎每个命令都想知道它在哪里执行。正如这里已经建议的那样,通过 strace 运行命令确实有助于发现这种怪异现象。当进程开始思考时间过长时,您还可以从另一个 tty strace 进程的 PID。您可能会看到类似 gethostbyname() 的内容...等待几秒钟...放弃并继续前进。

相关内容