如何才能在 Python 中提高得到 https 响应速度 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wanliyi
V2EX    问与答

如何才能在 Python 中提高得到 https 响应速度

  •  
  •   wanliyi 2022-01-16 11:02:43 +08:00 2688 次点击
    这是一个创建于 1371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用 python 发送一个 https 请求,收到响应居然花了接近 1s ,显然有点不能接受,有什么好的解决方案吗,不论用多大的带宽速度也都在 1s 左右

    18 条回复    2022-01-17 19:11:23 +08:00
    makdon
        2
    makdon  
       2022-01-16 11:15:15 +08:00
    从哪里请求哪里的,https 握手就化不少时间了,如果请求国外的,1s 也确实差不多了
    ClericPy
        3
    ClericPy  
       2022-01-16 11:16:49 +08:00
    你只给个结果不给线索, 只能胡猜了...

    1. 复用连接
    2. 禁用 ssl
    3. 开高并发, TCPConnector limit 开大点
    wanliyi
        4
    wanliyi  
    OP
       2022-01-16 11:19:56 +08:00
    @makdon 请求 alipay.com ,返回网页 html
    wanliyi
        5
    wanliyi  
    OP
       2022-01-16 11:21:30 +08:00
    @ClericPy 只请求单次开并发应该没用吧
    whenov
        6
    whenov  
       2022-01-16 11:31:29 +08:00
    @wanliyi 只请求单次为啥 1s 不能接受啊
    wanliyi
        7
    wanliyi  
    OP
       2022-01-16 11:34:54 +08:00
    @whenov ttfb500ms 不就应该算过长了吗
    pengtdyd
        8
    pengtdyd  
       2022-01-16 11:55:36 +08:00
    换 C
    wanliyi
        9
    wanliyi  
    OP
       2022-01-16 14:04:15 +08:00 via iPhone
    @pengtdyd 自己写 socket ?
    zwy100e72
        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” 这个指标时,有可能不是带宽瓶颈。如果带宽不是瓶颈,那么再增加带宽也是无法加速连接的。
    deplivesb
        11
    deplivesb  
       2022-01-16 15:17:46 +08:00
    gesse
        12
    gesse  
       2022-01-16 15:39:24 +08:00
    @deplivesb
    破案了
    wanliyi
        13
    wanliyi  
    OP
       2022-01-16 16:08:50 +08:00 via iPhone
    @deplivesb 额,当然不是直接这样,是 get 支付界面
    wanliyi
        14
    wanliyi  
    OP
       2022-01-16 16:09:07 +08:00 via iPhone
    @zwy100e72 好的,我需要排查一下,谢谢
    wanliyi
        15
    wanliyi  
    OP
       2022-01-16 16:18:02 +08:00 via iPhone
    @zwy100e72 单次请求 waitting(TTFB)时间能达到 800ms ,请问这个阶段时间是无法优化的吗
    documentzhangx66
        16
    documentzhangx66  
       2022-01-17 00:22:42 +08:00
    deplivesb 这位老哥给了你一条很好的思路。

    你可以在每一处关键位置,加上时间戳,然后去百度开一台按分钟计费的云主机,接着对比一下自己 PC 与云主机的每个时间戳。

    按分钟计费的云主机,我跑一次这种简单测试,就几毛钱成本...
    aladdinding
        17
    aladdinding  
       2022-01-17 09:09:38 +08:00
    curl -v 先看看 curl 的时间
    1daydayde
        18
    1daydayde  
       2022-01-17 19:11:23 +08:00 via iPhone
    在 sailfishos 上开发 app 遇到过,在 dns 解析花了很长时间
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2846 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:32 PVG 15:32 LAX 00:32 JFK 03:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86