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

13 天前
 yumerdev93

以下环境均在 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 应该怎么配置优化呢?

1731 次点击
所在节点    NGINX
19 条回复
defunct9
13 天前
开 ssh ,让我上去看看
blackeeper
13 天前
NGINX 这几个配置你可以
worker_aio_requests worker_connections
blackeeper
13 天前
NGINX 这几个配置你可以改改看
worker_processes 默认是 1
worker_aio_requests 默认是 32
worker_connections 这个默认是 512
pangzipp
13 天前
use epoll;

ulimit -n 检查下系统资源

upstream 使用 keepalive
yumerdev93
13 天前
@blackeeper
worker_aio_requests 这个参数是废弃了吧?
worker_processes 一般都是 auto 使用 cpu 核心数,worker_connections 已经改到 10240 了,不是 worker_connections 的问题
fengpan567
13 天前
检查 TCP 连接队列的配置,看下队列是不是太小了
swananan
13 天前
NGINX 如果 cpu 跑满了,perf top -p {nginx-pid} 看下 NGINX 性能热点在哪里。
yumerdev93
13 天前
@pangzipp
破案了,确实是 upstream 使用 keepalive CPU 就降低了,感谢兄弟🙏。
gearfox
13 天前
@defunct9 .............
test00001
13 天前
nginx 配置方便看一下吗?
hackroad
12 天前
@gearfox #9 点通的 gearfox ?
777Goea
12 天前
这个得看看
layxy
12 天前
docker nginx 默认配置应该会读取宿主机的 cpu 信息,有可能创建了太多的进程导致吞吐量下降
gearfox
12 天前
@hackroad 哈哈哈,那个号以前 2 个人用
hackroad
12 天前
@gearfox #14 果然是,我说怎么这么眼熟,这么多年过去了。。
gearfox
12 天前
@hackroad 时间真的过的好快
hzzhzzdogee
10 天前
@pangzipp 所以 upstream 不该使用 keepalive 吗, 不太懂
hzzhzzdogee
10 天前
@yumerdev93 #8 upstream 不该使用 keepalive 吗, 不太懂
yumerdev93
9 天前
@hzzhzzdogee 我测试结果是 upstream 需要添加 keepalive ,这样能减少与后端的网络开销。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1106475

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX