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

为什么 nginx 反向代理,并发性能很差?

  •  
  •   newyoung · 2023-08-27 22:39:48 +08:00 · 3986 次点击
    这是一个创建于 388 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端服务器 和 源站服务器的硬件配置如下,系统是 centos7:

    CPU:E5-2696V4*2(88 线程) 内存:64G DDR4 硬盘:500G SSD (读写 450M/s 左右)

    前端和后端服务器都用的 nginx ,他俩单独测试并发都没问题。前端反向代理到后端后,正常连接总耗时 200ms ,但并发一旦超过 20 后,就至少有 1~2 个连接耗时超过 1.5 秒,如果加大并发,这种耗时较长的连接数量比例就越高,并发小于 20 后就一切正常。

    前端服务器和源站服务器之间的网络质量是非常好的,而且基本可以确定不是源站的问题,因为接入 CDN 服务商,用单个 CDN 节点回源进行测试时,并发很高都不会出现耗时变长的情况。

    我是从 nginx 配置 和 linux 内核参数 来进行优化,做了很多尝试,都没有效果,有遇到类似问题的朋友吗?可否指点一下?

    15 条回复    2023-11-15 17:35:24 +08:00
    epicSoldier
        1
    epicSoldier  
       2023-08-27 22:43:23 +08:00
    nginx 设置一下日志打印一下后端服务器处理请求到底耗时多久,瞎猜没啥用
    hefish
        2
    hefish  
       2023-08-27 23:36:05 +08:00
    后端总耗时能到 200ms 啊,这是个啥样的后端。。。。
    zhuisui
        3
    zhuisui  
       2023-08-27 23:40:48 +08:00
    怀疑是哪个因素的问题,就把哪个因素变成变量,控制变量法
    看你的描述,没看出来你有将 nginx 作为变量,进行单纯的加入和去掉 nginx 的并发测试,你只单独对前端和后端分别进行了并发测试,并在引入更多变量且瞎猜的路上越走越远
    newyoung
        4
    newyoung  
    OP
       2023-08-27 23:41:21 +08:00
    @epicSoldier 源站耗时一直是低的
    newyoung
        5
    newyoung  
    OP
       2023-08-27 23:42:21 +08:00
    @hefish 200ms 是我本地访问整个反向代理流程的总耗时,不是后端耗时。
    newyoung
        6
    newyoung  
    OP
       2023-08-27 23:46:52 +08:00
    @zhuisui 我是把前端 nginx 有可能影响到并发性能的配置项挨着修改做了测试,然后又把可能影响到并发性能的内核设置挨个做了测试,都没有用。

    整个找问题的流程没有在帖子里细说,主要目的是想看看有没有人遇到此问题且对此有研究成果,这样更高效一点。
    owen800q
        7
    owen800q  
       2023-08-28 00:09:11 +08:00 via iPhone
    服务是怎样的? 只是单纯的访问数据库吗,确定没有其他下游的 api 阻塞吗
    fpk5
        8
    fpk5  
       2023-08-28 01:20:25 +08:00 via iPhone
    打日志,瞎试是试不出来的
    jorneyr
        9
    jorneyr  
       2023-08-28 07:40:47 +08:00
    前端不通过 Nginx ,直接访问服务器端进行压测试试。
    liuhailiang
        10
    liuhailiang  
       2023-08-28 09:03:09 +08:00
    压测过程中关注下系统资源状态,常规的 cpu 、io 、链接数、先寻找瓶颈在哪里,在根据资源类型寻找参数配置调优。盲猜是前端的 nginx 机器链接数问题,尝试看看机器的最大 tcp 链接数、nginx 开启长链接、链接复用等;
    waringid
        11
    waringid  
       2023-08-28 09:58:57 +08:00
    还是要看日志的反馈。重点检查连接数和端口的配置情况。
    layxy
        12
    layxy  
       2023-08-28 10:04:39 +08:00
    nginx 日志打印下后端耗时,nginx 和后端是否为长连接
    kinXdle
        13
    kinXdle  
       2023-08-28 11:26:52 +08:00
    这个帖子我好像在 hostloc 看到过?
    newyoung
        14
    newyoung  
    OP
       2023-08-28 11:55:01 +08:00
    问题已找到,感谢各位,就是前后端的长连接没有建立成功
    liuyinltemp
        15
    liuyinltemp  
       308 天前
    @newyoung 大佬,长链接怎么解决的呀?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2835 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:19 · PVG 08:19 · LAX 17:19 · JFK 20:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.