springboot 单机 qps 只有 2000 合理吗?
source link: https://www.v2ex.com/t/816898
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
ecs 配置:4c 8g
程序流程:从 rds (mysql) 中获取数据,放入 redis ,然后做 vo 转换,返回。如果有 redis 有数据,就会直接返回,不会从 mysql 中获取。
目前结果是单机 qps 只能到 2000 ,超过 3000 之后,机器负载就会很高,比如 cpu 超过 70%, 内存也超过 70%。
我们高峰 qps 有 3w , 感觉只能加很多机器才能抗住。
我的问题是:springboot 的单机 qps 这么低吗?
xbh1794970183564 1 天前
Salticey 1 天前
lixintcwdsg 1 天前 6
1. spring boot 线程数是不是满了,自带 tomcat 默认 200 ,如果满了说明后端处理太慢了。
2. 看一下你的 mysql 线程池大小多少,是不是默认的 8 。
3. 看一下你的 mysql 每条查询到底多少毫秒,开一下 druid 这类链接池监控就行,看看是不是 mysql 查询存在瓶颈。
4. 开 jprofile 之类的工具,在线看一下 CPU 事件消耗在哪里,大概是 mysql 引起的线程等待
可能的处理方案:
1. 如果 mysql 存在瓶颈,建议把 spring boot 的线程数调低,高了毫无意义。
2. mysql 查询快,你可以缩小你的 mysql 线程池数量,反之扩大。
3. redis 确保用异步驱动不要用 jedis
4. 客户端是离散的还是集中的,如果固定一些极其请求你这个服务,http keep-alive 记得开。
最后,你这类服务如果要用 java ,不建议 spring boot 。至少不要用同步的 jdbc ,该用异步数据库驱动+异步 redis 驱动+少线程(一般都是基于 netty )的 web 容器。比如干脆 vert.x
当然这个涉及到技术选型,可能你说了不算。还有一个方案你可以参考,就是把 spring boot 不要自己接 http 请求,spring boot 就启动一个 netty 就好了,netty 负责 http 编解码和 vo 转换部分,netty 和 spring boot 通过 applicationContext 交互。至少保证线程数不太多,CPU 也不会飙多高,你专心调整的 mysql 线程池到一个合理数量。
最后,CPU 飙高说来说起大概率还是线程太多的问题~~
jorneyr 12 小时 3 分钟前
2014 年的 MBP, i7 4C 8G ,也是 Spring Boo 程序,和你这个逻辑差不多。
2018 年做的压测,同时连上无线和有线双网卡都工作,QPS 达到 15000 左右,如果只有无线或者有线,QPS 为 7000 多。
Recommend
-
110
滑动验证页面 别离开,为了更好的访问体验,请滑动滑块进行验证,通过后即...
-
69
-
44
-
48
greenplumn单机2segment安装
-
92
折腾无极限,技术永无止境 前言 未标准化进行java开发时,没有进行对业务代码以及公用逻辑进行分离,如果需求遇到改动,需要改公用逻辑时,需要去一处处业务代码中去找,大大的浪费了时间,使用接口后,可以合理的解决这一问题。 接口的概念 使用interface声
-
8
[TOC]如何评估、预测系统的QPS容量评估按照5倍冗余计算系统架构设计背景当我们在设计一套系统的时候,我们要考虑好系统的架构设计、模块划分、技术方案选型、还有系统性能如能够承受的QPS。当我们线上系统能够支撑10W QPS...
-
13
TPS 概念TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,...
-
5
通俗易懂 QPS、TPS、PV、UV、GMV、IP、RPS 的概念解释关于 QPS、TPS、PV、UV、GMV、IP、RPS 这些词语,看起来好像挺专业。但实际上,我认为是这是每个程序员必懂的知识点了,你可以搞不懂它们怎么计算的,但是你最少要了解它们分别代表什么意思。
-
8
V2EX › Kubernetes k8s 系真的是 qps 杀手 liuxu · 13 小时 55 分钟前 · 3123 次点击
-
6
修改ack的apiserver请求qps February 18, 2023 默认ack的apiserver qps是5,突发请求上限是10,如果你对于apiserver...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK