V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
yumerdev93
V2EX  ›  NGINX

关于 Nginx 反向代理性能调优的问题,求指导🙏

  •  
  •   yumerdev93 · 2 天前 · 1481 次点击

    以下环境均在 docker 中,nginx 用 host network 。

    我现在在用 Nginx 代理一个 Fastapi 应用,从局域网内其他机器通过wrk直接压测后端应用的一个简单返回,在 8 核 CPU 上有 4w QPS ,但通过 Nginx 代理 Fastapi 后,QPS 只有离谱的 2-3k ,我看后端机器 CPU 是没有跑满的,Nginx CPU 反而是占用满了。

    压测结果:

      2 threads and 200 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency   115.25ms   86.47ms 712.60ms   45.32%
        Req/Sec     0.91k     1.01k    3.74k    87.67%
      27096 requests in 15.02s, 9.25MB read
    Requests/sec:   1804.16
    Transfer/sec:    630.75KB
    

    上面操作均在 3 台局域网内机器,实际上在 Nginx 机器通过 curl 访问后端也只是 2ms 的延迟,请求这问题是出在哪儿了呢? Nginx 使用的是默认配置,没经过优化。

    另外,通过 docker 部署 traefik 反向代理后压测,后端能正常跑满 CPU ,延迟也是正常的几毫秒之内,就是 traefik CPU 占用也挺大的,按道理来说 Nginx 性能应该强于 traefik 吧?

    这个问题困扰了我好几天了,问 GPT Nginx 优化相关的也只是反复回答链接数、keep alive 这些,都试过了没作用,请问各位大哥 Nginx 应该怎么配置优化呢?

    16 条回复    2025-01-21 10:45:18 +08:00
    defunct9
        1
    defunct9  
       2 天前   ❤️ 1
    开 ssh ,让我上去看看
    blackeeper
        2
    blackeeper  
       2 天前
    NGINX 这几个配置你可以
    worker_aio_requests worker_connections
    blackeeper
        3
    blackeeper  
       2 天前
    NGINX 这几个配置你可以改改看
    worker_processes 默认是 1
    worker_aio_requests 默认是 32
    worker_connections 这个默认是 512
    pangzipp
        4
    pangzipp  
       2 天前   ❤️ 1
    use epoll;

    ulimit -n 检查下系统资源

    upstream 使用 keepalive
    yumerdev93
        5
    yumerdev93  
    OP
       2 天前
    @blackeeper
    worker_aio_requests 这个参数是废弃了吧?
    worker_processes 一般都是 auto 使用 cpu 核心数,worker_connections 已经改到 10240 了,不是 worker_connections 的问题
    fengpan567
        6
    fengpan567  
       2 天前
    检查 TCP 连接队列的配置,看下队列是不是太小了
    swananan
        7
    swananan  
       2 天前
    NGINX 如果 cpu 跑满了,perf top -p {nginx-pid} 看下 NGINX 性能热点在哪里。
    yumerdev93
        8
    yumerdev93  
    OP
       2 天前
    @pangzipp
    破案了,确实是 upstream 使用 keepalive CPU 就降低了,感谢兄弟🙏。
    gearfox
        9
    gearfox  
       2 天前
    @defunct9 .............
    test00001
        10
    test00001  
       2 天前
    nginx 配置方便看一下吗?
    hackroad
        11
    hackroad  
       2 天前
    @gearfox #9 点通的 gearfox ?
    777Goea
        12
    777Goea  
       2 天前 via iPhone
    这个得看看
    layxy
        13
    layxy  
       2 天前
    docker nginx 默认配置应该会读取宿主机的 cpu 信息,有可能创建了太多的进程导致吞吐量下降
    gearfox
        14
    gearfox  
       1 天前
    @hackroad 哈哈哈,那个号以前 2 个人用
    hackroad
        15
    hackroad  
       1 天前
    @gearfox #14 果然是,我说怎么这么眼熟,这么多年过去了。。
    gearfox
        16
    gearfox  
       1 天前
    @hackroad 时间真的过的好快
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1159 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:20 · PVG 02:20 · LAX 10:20 · JFK 13:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.