为什么用 Nginx 做了负载均衡之后 QPS 还不如直接压测 Tomcat?

2019-09-02 15:48:45 +08:00
 Mei99
Tomcat 负责收 POST 请求并写单机的 Redis,两个 Tomcat 前面挂了一个 Nginx 做转发,配置都是 6 核 4G 内存独立机器,和压测机都在一个局域网内,用 Jmeter 直接压测 Tomcat 能跑到 8000QPS,压测 Nginx 只有 5000 多,我该怎么做?
8196 次点击
所在节点    NGINX
31 条回复
BBCCBB
2019-09-02 15:52:10 +08:00
这是肯定的, 挂个 nginx 中间多了一层转发消耗, 挂 nginx 是为了其他的功能,比如多实例水平扩展, 负载均衡, 做统一的权限认证等.
opengps
2019-09-02 15:54:56 +08:00
nginx 是为了多台同职责机器对外统一服务入口,多台机器做负载均衡,不是提高单机性能
Mei99
2019-09-02 15:56:13 +08:00
@opengps 可是 Nginx 不是说轻松达到几万 QPS 吗?那压测 Nginx 的话不应该是接近 Tomcat 的 QPS*2 吗?
opengps
2019-09-02 15:56:37 +08:00
等等,楼主意思是负载均衡后 2 台才 5000,不如一台的 8000 ?
Mei99
2019-09-02 15:56:54 +08:00
@BBCCBB 我挂 Nginx 就是为了给后面多个 Tomcat 做负载均衡啊....性能反而还下降了
opengps
2019-09-02 15:58:57 +08:00
关注下 Nginx 机器的网卡使用情况,压测时候是不是占满了带宽
Mei99
2019-09-02 16:14:39 +08:00
@opengps 带宽应该没啥问题,内网千兆互联,看 Jmeter 最大发送速度才 2.5MB/s,Nginx 机器的 CPU 也没有跑满,压测机是 i9 9900K
akira
2019-09-02 16:21:03 +08:00
是不是都只转发到一边去了。。
gstqc
2019-09-02 16:23:35 +08:00
jmeter 有性能问题
用 wrk 压吧
zjlletian
2019-09-02 16:26:29 +08:00
这就太多了要考虑的了,改下 nginx 线程数,连接数配置?
zpfhbyx
2019-09-02 16:29:36 +08:00
贴下 nginx 配置?
Mei99
2019-09-02 16:29:40 +08:00
@zjlletian 线程和连接数一般多少合适?我改成和 ulimit 一样的 65535 了
Mei99
2019-09-02 16:30:05 +08:00
@akira 只转到一边也不会比直接压测 Tomcat 性能还低吧....
Mei99
2019-09-02 16:39:05 +08:00
@zpfhbyx 6 核的 i5 8500,6 个 worker 进程
zpfhbyx
2019-09-02 16:41:09 +08:00
@Mei99 额 我意思是配置文件..
LeeSeoung
2019-09-02 17:35:51 +08:00
看 nginx log 看 tomcat log
Xusually
2019-09-02 17:39:37 +08:00
一般情况下不会的。。大概率是 NGINX 配置问题或者 NGINX 那台机器的内核参数配置问题。
cloudyplain
2019-09-02 17:41:56 +08:00
可能是 nginx 配置的问题,是否是长连接、upstream 连接池是否足够大、网络问题等等
janxin
2019-09-02 17:51:13 +08:00
我盲猜可能是 nginx 相关配置的问题
gz911122
2019-09-02 17:54:05 +08:00
盲猜两个 tomcat 在一个机器上

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

https://www.v2ex.com/t/597222

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

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

© 2021 V2EX