我用 python 发送一个 https 请求,收到响应居然花了接近 1s ,显然有点不能接受,有什么好的解决方案吗,不论用多大的带宽速度也都在 1s 左右
2
makdon 2022-01-16 11:15:15 +08:00
从哪里请求哪里的,https 握手就化不少时间了,如果请求国外的,1s 也确实差不多了
|
3
ClericPy 2022-01-16 11:16:49 +08:00
你只给个结果不给线索, 只能胡猜了...
1. 复用连接 2. 禁用 ssl 3. 开高并发, TCPConnector limit 开大点 |
4
wanliyi OP @makdon 请求 alipay.com ,返回网页 html
|
8
pengtdyd 2022-01-16 11:55:36 +08:00
换 C
|
10
zwy100e72 2022-01-16 15:13:24 +08:00
可以从几个方向排查
1. DNS: 楼主这 1s 时间中有包含 DNS 查询时间吗?如果有的话,通过 dig 命令确认 DNS 响应时间是不是过大,如果 DNS 延迟较高,可通过更换其他 DNS 或者本地 DNS 缓存的方式来降低 DNS 的影响 2. 连接时的开销:请求 alipay.com 时会涉及到 TCP 连接、301 跳转、TCP 重连、TLS 协商等流程,可通过抓包分析是否这个阶段开销过高,通过优化连接时参数来降低影响;也可以通过连接复用降低影响 3. 楼主的目标:楼主需要明确需求,是“单次连接时长小于 N ms”,还是 “多次连接,p50 / p90 / p99 延迟指标小于 N ms”。 4. 程序本身的开销:如果连接时 CPU 占用过高,可以用相关 profiler 工具分析热点,尝试通过更换效率更高的框架来降低开销 最后,当你在讨论 “1s” 这个指标时,有可能不是带宽瓶颈。如果带宽不是瓶颈,那么再增加带宽也是无法加速连接的。 |
11
deplivesb 2022-01-16 15:17:46 +08:00
![iTerm2-20220116151654.png]( https://s2.loli.net/2022/01/16/ysoPT9OYrcw6RiJ.png)
|
15
wanliyi OP @zwy100e72 单次请求 waitting(TTFB)时间能达到 800ms ,请问这个阶段时间是无法优化的吗
|
16
documentzhangx66 2022-01-17 00:22:42 +08:00
deplivesb 这位老哥给了你一条很好的思路。
你可以在每一处关键位置,加上时间戳,然后去百度开一台按分钟计费的云主机,接着对比一下自己 PC 与云主机的每个时间戳。 按分钟计费的云主机,我跑一次这种简单测试,就几毛钱成本... |
17
aladdinding 2022-01-17 09:09:38 +08:00
curl -v 先看看 curl 的时间
|
18
0312birdzhang 2022-01-17 19:11:23 +08:00 via iPhone
在 sailfishos 上开发 app 遇到过,在 dns 解析花了很长时间
|