![一些需要互联网访问的命令执行时间过长](https://linux22.com/image/203657/%E4%B8%80%E4%BA%9B%E9%9C%80%E8%A6%81%E4%BA%92%E8%81%94%E7%BD%91%E8%AE%BF%E9%97%AE%E7%9A%84%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%97%B6%E9%97%B4%E8%BF%87%E9%95%BF.png)
最近我注意到一些需要互联网访问的命令在我的 Arch 系统上执行时间太长。例如:
ssh ...
需要 3 分钟询问我密码pip install ...
需要 1 分钟才能开始下载包npm install ...
永远挂起
但其他像 git 一样,立即运行。大约一两周前,这些命令突然变慢了。在他们工作正常之前。
我尝试重新安装 Linux 并使用可引导 USB 在 Ubuntu 和 Manjaro 上进行测试,但结果是相同的。这不可能是由于互联网连接速度慢造成的,因为我通常有 40 Mb/s 的下载和 10Mb/s 的上传。目前我正在使用 EndeavourOS。
我尝试将我的设置/etc/resolv.conf
为8.8.8.8
(Google 的公共 DNS 服务器),但这并没有解决速度问题。
我还在 Windows 上测试了它(我有 Windows 和 Linux 的双引导),它工作得很好。
ssh -vvv ...
直到暂停位置的完整输出:
OpenSSH_8.9p1, OpenSSL 1.1.1m 14 Dec 2021
debug1: Reading configuration data /etc/ssh/ssh_config
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/whistleroosh/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/whistleroosh/.ssh/known_hosts2'
debug2: resolving "xxx" port 22
debug3: resolve_host: lookup xxx:22
debug3: ssh_connect_direct: entering
debug1: Connecting to xxx [yyy] port 22.
debug3: set_sock_tos: set socket 3 IPV6_TCLASS 0x48
有谁知道造成这种放缓的原因是什么?
答案1
问题出在 IPv6 上。例如通过使用禁用它sysctl -w net.ipv6.conf.all.disable_ipv6=1
解决了问题。
答案2
通常,当我看到类似的内容时,这是由于名称解析超时造成的。检查一下是件好事。
- 如果您有 /etc/nsswitch.conf,请确保未配置任何您不使用的服务。
- 检查配置的 DNS 名称服务器是否正确。
- 您是否有处理反向解析的本地名称服务器?某些服务会尝试查找您的客户姓名以进行记录。如果反向解析停止,服务器可能会在这段时间内挂起。