V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cankoor
V2EX  ›  程序员

let's encrypt 有访问速度限制?

  •  
  •   cankoor · 2018-11-07 10:22:24 +08:00 · 4408 次点击
    这是一个创建于 2243 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在本地搭建了两个网站,一个是 https,一个是 http。用 ab 测试同一个文件(复制的)

    ab -n 1000 -c 100 
    

    发现两者的速度相差比较大。下面是数据。

    以下数据是 http 访问

    http

    以下数据是 https 访问

    https

    我看有人在写 Letsencrypt 限制时候,有一条是请求证书认证有速度限制,是每秒 20 次。所以这两者的速度差异主要还是因为这个限制么?

    有没有好用的,速度限制不大的证书认证服务?如果没有,看起来又要走 HTTP 了。

    21 条回复    2018-11-07 14:31:20 +08:00
    SakuraKuma
        1
    SakuraKuma  
       2018-11-07 10:33:26 +08:00   ❤️ 3
    lets encrypt: 这锅不背。

    ps: lets encrypt 的限制是申请次数限制。
    cankoor
        2
    cankoor  
    OP
       2018-11-07 10:37:07 +08:00
    @SakuraKuma 那我就放心了...
    johnnie502
        3
    johnnie502  
       2018-11-07 10:37:12 +08:00   ❤️ 1
    lets encrypt 哭晕在厕所
    cankoor
        4
    cankoor  
    OP
       2018-11-07 10:38:50 +08:00
    @johnnie502 我并不理解那个请求证书认证是什么意思。。每次浏览器访问不是都要认证一次证书么?
    hlwjia
        5
    hlwjia  
       2018-11-07 10:42:51 +08:00
    重度网络基础知识
    hlwjia
        6
    hlwjia  
       2018-11-07 10:43:26 +08:00
    上面 typo

    应该是 *重读
    xiaopc
        7
    xiaopc  
       2018-11-07 10:51:39 +08:00 via Android   ❤️ 1
    @cankoor
    1. 你 HTTPS 速度慢与要加密吃 CPU 等因素有关。
    2. 用证书加密本身是离线的(OSCP 查询也和这个没关系)。
    3. LE 限制的是证书发放频率。
    cankoor
        8
    cankoor  
    OP
       2018-11-07 10:54:45 +08:00
    @xiaopc 懂了懂了,谢谢了
    fcten
        9
    fcten  
       2018-11-07 11:04:13 +08:00
    ab -k -n 1000 -c 100

    你会发现 let's encrypt 突然良心发现让你变快了
    xiaopc
        10
    xiaopc  
       2018-11-07 11:09:43 +08:00 via Android
    @xiaopc #7 typo: OCSP
    0ZXYDDu796nVCFxq
        11
    0ZXYDDu796nVCFxq  
       2018-11-07 11:11:26 +08:00 via Android
    Time per request: 3057 ms
    你这是有严重的性能问题
    cankoor
        12
    cankoor  
    OP
       2018-11-07 11:13:21 +08:00
    @fcten ==...我查了一下 keep alive。那当然了。。。。
    cankoor
        13
    cankoor  
    OP
       2018-11-07 11:14:54 +08:00
    @gstqc 我请求的就是一个纯文本。应该是 CPU 的问题吧
    lihongjie0209
        14
    lihongjie0209  
       2018-11-07 11:16:40 +08:00
    http: TCP -> HTTP


    https: TCP -> SSL(要加密和解密的) -> HTTP
    cankoor
        15
    cankoor  
    OP
       2018-11-07 11:22:48 +08:00
    @xiaopc 那这样的话,下面的架构,把证书放在 SLB 上的问题就在 SLB 的 CPU 了。

    ![slb]( )
    my101du
        16
    my101du  
       2018-11-07 11:25:49 +08:00
    这个问题,我也奇怪过。之前做 Laravel 优化,用 ab 测试带 https,性能报告低到令人发指。后来换了一个 go 的工具,终于 http/https 对比没那么离谱了

    ```bash
    go get -u github.com/rakyll/hey
    ```

    https://github.com/rakyll/hey
    cankoor
        17
    cankoor  
    OP
       2018-11-07 11:35:15 +08:00
    @my101du 我试了一下,速度快的让我怀疑是和`ab -k`一样的效果,就是 keep alive 了。
    zpf124
        18
    zpf124  
       2018-11-07 11:38:31 +08:00   ❤️ 2
    所有说 https 比 http 消耗的高的不多, 都是指 正常的用户访问。
    正常的用户访问只有第一次情况是要验证证书,后续只有单纯的需要多花费一些 cpu 的加解密时间。


    大多数人 比较的仅仅是:
    “ 100 次 http 下载需要的时间与 1 次(证书认证+确认公私钥、加密方法、ssl 加解密)的 https + 99 次(单纯 ssl 加解密)的 https 需要的时间。

    而 你比较的是 100 次 http 下载需要的时间与 100 次(证书认证+确认公私钥、加密方法、ssl 加解密)的 https 需要的时间。


    对于第一种情况, 交换密钥验证证书所需要的数据量在总数量中占比微乎其微, 而第二种情况如果你请求的文件本身比较小,证书和密钥的数据量有可能都能超过总数据量的一半了。

    (看你的 total,http: 50kb 左右,https: 90kb 左右, 单纯的加密数据增长绝对没这么多,至少 1/3 的数据量来自传递证书和公私钥)

    另外数值差距大 cpu io 都有可能是瓶颈。
    cankoor
        19
    cankoor  
    OP
       2018-11-07 12:01:34 +08:00
    @zpf124 正解,感觉是这样的。对于短时超多用户的涌入,所以基本上就是第二种情况。
    Yanni0507
        20
    Yanni0507  
       2018-11-07 12:04:23 +08:00
    @zpf124 赞同。时间消耗主要是在 SSL 握手那里,公钥验证消耗较大。不过,私钥是不会传输的。
    zpf124
        21
    zpf124  
       2018-11-07 14:31:20 +08:00
    @Yanni0507 我脑抽了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.