初级后端的疑惑,如何估算接口 qps,以及 redis 占用多少容量, nginx 能抗多少并发

2021-06-21 13:14:30 +08:00
 waibunleung

如题,参与公司业务开发中,经常会遇到这样的问题:

  1. 这个业务入口会为接口带来多少的 qps 增长?
  2. 这个接口能抗住多少 qps ?
  3. 这个业务要上缓存的话,预计会带来多少缓存占用?
  4. 现有的 redis 能抗多少并发?内存占用是否过高?是否需要增加机器?
  5. 现有的 nginx 集群,能抗住多少并发?是否需要增加机器?
  6. 业务上线预计会带来 1000qps 的增长,服务器资源(接口,缓存,数据库)是否能扛得住?
  7. 这个业务的性能瓶颈在哪里?怎么查出来? 等等

总结的问题就是,大佬们是如何进行业务的容量评估,性能评估,性能排查的?

希望能有大大能逐点解答一下上面的 7 个问题你们在工作中是怎么去分析的,身为菜鸟的我每次遇到这种问题,都头痛半天,然后还是去问大佬怎么怎么弄,但是几次下来也没有总结到套路,都快怀疑自己适不适合干下去了.... 所以想向各位请教下,学习一下大家都是怎么评估和排查问题的,想在这方面有点成长,万分感谢!

6971 次点击
所在节点    程序员
52 条回复
waibunleung
2021-06-21 16:23:02 +08:00
@iyaozhen 大佬可以简单回答一下,然后再把写好的文档分享一下~
waibunleung
2021-06-21 16:24:07 +08:00
@fantastM 太棒了,就是需要类似这样的回复!还有请问下,类似于 4k qps mysql 能不能扛得住,会不会报警这种问题,要怎么思考呢?
liudaolunhuibl
2021-06-21 16:48:42 +08:00
事实上你接口能承受住多少 QPS 大部分是你的服务器和中间件决定的,你的代码里能决定的只是 GC 频率、CPU 占用率、数据库链接等等
liudaolunhuibl
2021-06-21 16:50:03 +08:00
对了推荐一个 redis 的客户端——Another Redis Desktop Manager,github 开源的, 是一个 MIT 的国人大佬开发的,非常非常好用
Jooooooooo
2021-06-21 16:50:33 +08:00
靠压测是个工作中实践时候的正确答案

但是面试或者领导问你这个问题显然不能这么答

可以考虑从线程池模型,io 耗时,业务敏感度等等几个方面去回答
waibunleung
2021-06-21 16:52:25 +08:00
@liudaolunhuibl 请移步推广节点
waibunleung
2021-06-21 16:52:59 +08:00
@Jooooooooo 能否举些例子呢?
fantastM
2021-06-21 16:53:46 +08:00
#22 先确定一些「能不能扛得住」的指标吧,不同场景对系统正常运行的指标是不同的(例如后台的统计 SQL 和用户的实时查询 SQL 对延迟的要求),然后跑基准测试看看。MySQL 的话,你可以看看《高性能 MySQL 》的第二章,或者搜关键字 mysql+benchmark
waibunleung
2021-06-21 17:55:21 +08:00
@fantastM 好的,感谢大佬!
StrongNoodles
2021-06-21 18:23:17 +08:00
压测,虽然和实际还是有出入,但是已经很有参考价值了
qwerthhusn
2021-06-21 18:38:26 +08:00
@liudaolunhuibl 不好用,字体很丑,Win10 缩放也有问题,俺推荐 RedisInsight,也是免费
SorcererXW
2021-06-21 18:48:11 +08:00
性能瓶颈可以使用 apm 、jaeger 这种 tracer,加上压测,看看整个链路上的性能瓶颈在哪里
waibunleung
2021-06-21 20:17:46 +08:00
@SorcererXW 那接口 qps 预估呢?
fengpan567
2021-06-21 22:45:37 +08:00
jmeter 自己压一波
Rocketer
2021-06-21 22:49:49 +08:00
不同的应用类型,QPS 峰值分布也不一样。我们(电商)一般会把一天的访问量平均分到 10 小时里去,然后按平均值的 10 倍配置负载能力。比如一天 100 万的访问量,那么 QPS 能撑住 1000000/36000*10=278 就可以了
LeeReamond
2021-06-21 22:58:57 +08:00
1 和 6 不是开发考虑的问题,2 和 4 的大概值估算是开发的基本功,写代码时候就知道大概是多少了,想知道具体值可以压测,5 的网关性能瓶颈几乎没见哪个业务遇到过,业务量大到这个份上还搞不清瓶颈在哪里比较玄学。7 多学习
LeeReamond
2021-06-21 22:59:44 +08:00
收藏数多大概是因为 LZ 问题问的不错,以后遇到初级开发可以让他挨个点考教
luwill
2021-06-22 10:40:11 +08:00
简单会答一下前几个问题。这 7 个问题应该能写一篇文章。
>这个业务入口会为接口带来多少的 qps 增长?
这个可以根据之前的相似业务来预测。主要是考虑业务在前端的露出位置,或者是替代其他业务的量。
或者套用一些 UG 策略公式,比如你们业务的页面转换率漏斗来计算。
>这个接口能抗住多少 qps ?
需要压测,估算都是不准的,可以使用单机压测,多机压测,真实业务环境压测,全链路压测
压测很多时候是帮你找到薄弱环节,整个业务的最大 qps 往往在短板上,比如 数据库,下游服务上。
>这个业务要上缓存的话,预计会带来多少缓存占用?
这个只能计算最大值,很难计算实际使用,毕竟缓存都有过期。不同的过期时间需要的空间大小不同。、
最简单的算法,缓存最大值 = 活跃人群 x 单个用户占用缓存最大值。
tairan2006
2021-06-22 10:46:18 +08:00
直接压
neptuno
2021-06-22 11:29:45 +08:00
花多少钱,投多少广告,能带来多少点击,这些数据都能帮助你预估 qps,然后进行压测。扛不住了,企业微信预警,先加机器,然后再优化

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

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

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

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

© 2021 V2EX