高性能 Web 缓存服务器 nuster 1.7.9.4 发布 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sajesemuy
V2EX    分享创造

高性能 Web 缓存服务器 nuster 1.7.9.4 发布

  •  
  •   sajesemuy
    jiangwenyuan 2018-02-05 08:35:33 +08:00 4189 次点击
    这是一个创建于 2814 天前的主题,其中的信息可能已经有所发展或是发生改变。

    nuster 1.7.9.4 已发布,本次更新主要修复了一个 url 中?位置不一样而 key 一样的 bug。

    nuster 是一个基于 HAProxy 的高性能缓存服务器。nuster 完全兼容 HAProxy,并且利用 HAProxy 的 ACL 功能来提供非常细致的缓存规则。特性包括

    • 完全兼容 HAProxy,支持所有 HAProxy 的特性和功能

    • 强大的动态缓存功能

      • 根据 HTTP method, uri, path, query, header, cookie 等等进行缓存
      • 根据 HTTP 请求和响应内容等等进行缓存
      • 根据环境变量服务器状态等等进行缓存
      • 根据 SSL 版本, SNI 等等进行缓存
      • 根据连接数量,请求速率等等进行缓存
      • 等等
    • 非常快

    • 删除缓存

    • 前后端 HTTPS

    • HTTP 压缩

    • HTTP 重写重定向

    性能:

    非常快, 单进程模式下是 nginx 的 3 倍,多进程下 nginx 的 2 倍,varnish 的 3 倍。详见性能比较

    本次更新

    • 增加

      • 新增了 uri 和 delimiter 关键字
    • 更新

      • query 长度未初始化
      • 不同请求可能产生一样的 key 的 bug
    第 1 条附言    2018-02-05 10:11:14 +08:00
    19 条回复    2018-02-05 19:53:17 +08:00
    est
        1
    est  
       2018-02-05 09:07:00 +08:00 via Android
    nginx 没开启 proxy 的 http/1.1。。。性能很低。。。。
    shuizhengqi
        2
    shuizhengqi  
       2018-02-05 09:44:54 +08:00
    ...这 是当成 了发布平台吗
    sajesemuy
        3
    sajesemuy  
    OP
       2018-02-05 10:11:49 +08:00
    @est 没开启 proxy 是指?
    sajesemuy
        4
    sajesemuy  
    OP
       2018-02-05 10:12:11 +08:00
    @shuizhengqi 不好意思,请多担待:)
    suconghou
        5
    suconghou  
       2018-02-05 10:17:59 +08:00   1
    @sajesemuy 你没发现 release 的代码编译后,-v 查看 版本写的还是老版本吗
    sajesemuy
        6
    sajesemuy  
    OP
       2018-02-05 10:21:59 +08:00
    @suconghou 感谢
    est
        7
    est  
       2018-02-05 10:43:19 +08:00
    @sajesemuy

    proxy_http_version 1.1;
    proxy_set_header Connection "";
    sajesemuy
        8
    sajesemuy  
    OP
       2018-02-05 10:56:57 +08:00
    @est 这个是设置 nginx 和 upstream 的,因为 cache 已经在 nginx 里,所以并不会有区别。
    nginx 和客户端之间是 1.1,keep-alive。
    est
        9
    est  
       2018-02-05 11:22:40 +08:00
    @sajesemuy 你先改下试试呢?
    sajesemuy
        10
    sajesemuy  
    OP
       2018-02-05 11:45:14 +08:00
    @est 不需要啊,这个参数就是这个意思
    sajesemuy
        11
    sajesemuy  
    OP
       2018-02-05 11:55:10 +08:00   2
    好吧,实践检验一下

    不设置
    =======
    ```
    #proxy_http_version 1.1;
    #proxy_set_header Connection "";
    ```
    curl -i http://10.0.10.13:8083/INSTALL
    ```
    HTTP/1.1 200 OK
    Server: nginx
    Connection: keep-alive
    ```
    可见 nginx 发给后端的请求为 http1.0
    ```
    10.0.10.13 - - [05/Feb/2018:12:50:18 JST] "GET /INSTALL HTTP/1.0" 200 916
    - -> /INSTALL
    ```
    设置
    ===
    ```
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    ```
    nginx 发给后端的请求为 http1.1
    ```
    10.0.10.13 - - [05/Feb/2018:12:51:14 JST] "GET /INSTALL HTTP/1.1" 200 916
    - -> /INSTALL
    ```
    wrk 比较
    ======
    ```
    wrk -c 1000 -d 30 -t 100 http://10.0.10.13:8083/INSTALL
    Running 30s test @ http://10.0.10.13:8083/INSTALL
    100 threads and 1000 connections
    Thread Stats Avg Stdev Max +/- Stdev
    Latency 11.34ms 10.90ms 225.76ms 92.30%
    Req/Sec 1.04k 446.52 6.22k 61.21%
    3069181 requests in 30.10s, 3.28GB read
    Requests/sec: 101967.40
    Transfer/sec: 111.44MB

    wrk -c 1000 -d 30 -t 100 http://10.0.10.13:8083/INSTALL
    Running 30s test @ http://10.0.10.13:8083/INSTALL
    100 threads and 1000 connections
    Thread Stats Avg Stdev Max +/- Stdev
    Latency 12.97ms 15.53ms 363.39ms 90.47%
    Req/Sec 1.06k 614.42 14.93k 63.68%
    3042735 requests in 30.10s, 3.25GB read
    Requests/sec: 101089.02
    Transfer/sec: 110.48MB
    ```

    可见并无明显差别
    est
        12
    est  
       2018-02-05 11:55:54 +08:00
    @sajesemuy 赞实践!
    sajesemuy
        13
    sajesemuy  
    OP
       2018-02-05 11:56:51 +08:00
    @est 见上一条:)

    回复不能用 markdown 么^^
    Showfom
        14
    Showfom  
    PRO
       2018-02-05 14:42:40 +08:00 via iPhone
    @sajesemuy 不能
    yytsjq
        15
    yytsjq  
       2018-02-05 14:57:43 +08:00
    不知道楼主对比测试过 OpenResty 的 srcache 缓存模块吗?

    我现在用的是 srcache+lua-resty-redis+redis 做的 WordPress 页面缓存

    https://github.com/openresty/srcache-nginx-module
    https://github.com/openresty/lua-resty-redis
    sajesemuy
        16
    sajesemuy  
    OP
       2018-02-05 15:21:13 +08:00
    @Showfom 什么不能
    sajesemuy
        17
    sajesemuy  
    OP
       2018-02-05 15:28:55 +08:00
    @yytsjq 没有测试过,srcache 是存在外部 memcache 或者 redis,应该会有消耗。我是内置了一个性能差不多和 redis 相当的 hashtable,估计会比 srcache 快。
    sajesemuy
        18
    sajesemuy  
    OP
       2018-02-05 15:29:20 +08:00
    @Showfom 哦,markdown 啊,谢谢:)
    sajesemuy
        19
    sajesemuy  
    OP
       2018-02-05 19:53:17 +08:00   1
    @yytsjq 做了一下测试,性能上 nuster 是 srcache+memcached 的三倍

    测试环境,软件硬件,内核参数,配置文件见
    t/427703
    或者
    https://github.com/jiangwenyuan/nuster/wiki/Performance-benchmark:-nuster-vs-nginx-vs-varnish

    srcache 的配置和官网一致。


    openresty+srcache 结果

    wrk -c 1000 -d 30 -t 100 http://10.0.10.13:8083/helloworld
    Running 30s test @ http://10.0.10.13:8083/helloworld
    100 threads and 1000 connections
    Thread Stats Avg Stdev Max +/- Stdev
    Latency 9.52ms 8.42ms 239.68ms 85.90%
    Req/Sec 1.24k 152.67 2.72k 71.13%
    3725352 requests in 30.10s, 859.77MB read
    Requests/sec: 123765.07
    Transfer/sec: 28.56MB


    nuster 结果

    wrk -c 1000 -d 30 -t 100 http://10.0.10.13:8081/helloworld
    Running 30s test @ http://10.0.10.13:8081/helloworld
    100 threads and 1000 connections
    Thread Stats Avg Stdev Max +/- Stdev
    Latency 3.33ms 1.95ms 205.90ms 79.42%
    Req/Sec 3.04k 330.76 5.29k 69.99%
    9101575 requests in 30.10s, 2.09GB read
    Requests/sec: 302383.66
    Transfer/sec: 71.23MB

    nuster 的 RPS 差不多是 openresty+srcache 的三倍
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2468 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:40 PVG 23:40 LAX 08:40 JFK 11:40
    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