一个奇怪的问题, curl 偶尔超时,然而却找不出来原因

2023-04-13 09:09:50 +08:00
 alect

有一台服务器,使用 Ubuntu 20.04 系统,上面装着 wordpress ,安装插件的时候偶然会提示 curl 错误, 无法连接 https://downloads.wordpress.org/ , 然而并不是所有时段都出错,多数时间是可以的,极少数时间出错。 然后写了个脚本用来测试 curl 这个域名的错误,脚本我贴这里了 https://pastebin.com/QC2UPqgb 脚本的意图就是每隔两秒获取一次链接里面的内容, 如果不能获取到特定关键字则判断为失败并记录日志, 经过多次在不同的时间段测试脚本,发现 1000 次会出现大约 50-70 次左右的错误, 我本来以为是网络不太好,同时用 mtr 测试,结果是零丢包,去测试 cloudflare 官网也无错误发生。

最离谱的是,我进入救援系统后,用这个脚本测试完全没有错误, 所以错误导致发生的原因可能就是服务器本身的 Ubuntu 有问题, 可是完全没有其他头绪了,请教各位可能是什么原因。

2116 次点击
所在节点    Ubuntu
8 条回复
dsareopsar
2023-04-13 09:18:59 +08:00
墙内机器吧?间歇性 dns 污染,间歇性阻断
fiveStarLaoliang
2023-04-13 09:24:22 +08:00
八成是 dns 问题
alect
2023-04-13 09:41:01 +08:00
@dsareopsar 服务器位于德国 Hetzner

@fiveStarLaoliang 也考虑了 dns 问题,所以测试的时候写入了 hosts 避免解析问题
dsareopsar
2023-04-13 09:53:43 +08:00
@alect 最好写个程序来测试,因为 http timeout 超时原因有很多,除了 tcp 连接时间以外,还有 tls 超时,response 响应超时,http2 连接超时
alect
2023-04-13 10:14:26 +08:00
@dsareopsar 哇 这就麻烦了,反正肯定是 Ubuntu 的设置哪里肯定有问题,
我切换到救援系统去测试是完全正常的,一旦回到生产系统测试就有几率出错。
watzds
2023-04-13 10:15:18 +08:00
看看各个阶段的耗时啊,下面请求两次百度,长连接第二次有区别


curl -X POST -w "\ndns_resolution: %{time_namelookup}, tcp_established: %{time_connect}, ssl_handshake_done: %{time_appconnect}, TTFB: %{time_starttransfer}, total: %{time_total}\n" -s "https://www.baidu.com" "https://www.baidu.com"
liuxu
2023-04-13 10:20:16 +08:00
mikewang
2023-04-13 10:43:39 +08:00
curl 加个 -v ,看哪个步骤出问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/932125

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX