首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
V2EX  ›  分享创造

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

  •  
  •   sajesemuy · 348 天前 · 2468 次点击
    这是一个创建于 348 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条附言  ·  348 天前
    19 回复  |  直到 2018-02-05 19:53:17 +08:00
        1
    est   348 天前 via Android
    nginx 没开启 proxy 的 http/1.1。。。性能很低。。。。
        2
    shuizhengqi   348 天前
    ...这 是当成 了发布平台吗
        3
    sajesemuy   348 天前
    @est 没开启 proxy 是指?
        4
    sajesemuy   348 天前
    @shuizhengqi 不好意思,请多担待:)
        5
    suconghou   348 天前   ♥ 1
    @sajesemuy 你没发现 release 的代码编译后,-v 查看 版本写的还是老版本吗
        6
    sajesemuy   348 天前
    @suconghou 感谢
        7
    est   347 天前
    @sajesemuy

    proxy_http_version 1.1;
    proxy_set_header Connection "";
        8
    sajesemuy   347 天前
    @est 这个是设置 nginx 和 upstream 的,因为 cache 已经在 nginx 里,所以并不会有区别。
    nginx 和客户端之间是 1.1,keep-alive。
        9
    est   347 天前
    @sajesemuy 你先改下试试呢?
        10
    sajesemuy   347 天前
    @est 不需要啊,这个参数就是这个意思
        11
    sajesemuy   347 天前   ♥ 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
    ```

    可见并无明显差别
        12
    est   347 天前
    @sajesemuy 赞实践!
        13
    sajesemuy   347 天前
    @est 见上一条:)

    回复不能用 markdown 么^^
        14
    Showfom   347 天前 via iPhone
    @sajesemuy 不能
        15
    yytsjq   347 天前
    不知道楼主对比测试过 OpenResty 的 srcache 缓存模块吗?

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

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

    测试环境,软件硬件,内核参数,配置文件见
    https://www.v2ex.com/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 的三倍
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2310 人在线   最高记录 4236   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 02:24 · PVG 10:24 · LAX 18:24 · JFK 21:24
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1