1000qps的JVM内存设置多大的内存

接口背景假设:

接口条件:支持1000QPS
接口响应:100ms
接口返回报文: 10kb

一、计算 1000qps所需要的内存
那么1000qps的请求需求的内存:1000*10kb=10000kb=9.8M
也就是说每秒需要9.8M的内存。

二、计算多久触发一次ygc
说明:ygc即堆的年轻代进行GC回收,触发条件为:eden、from幸存区内存满了或者不够了就会触发。一般要求ygc达到分钟级别(即最多一分钟执行一次young  gc)

1、计算1000qps每分钟所需的新生代内存:60*9.8M=588M
      注:新生代内存与老年代内存的比例:1:2  (注:堆内存 = 新生代内存 + 老年代内存)
2、计算所需要堆的大小:588M * 3  = 1764M = 1.764G
3、那么堆内存设置2G就够了。

三、需要多少个节点实例
根据刚才计算的堆内存设置2G,单节点即可满足1000qps了。

如为了高可用可以部署2个节点,每个节点承担500qps即可。

四、计算最大支持并发数
springcloud springboot的线程数取决于tomcat的线程数,tomcat的默认线程数为200
1、计算单个线程处理的qps:1000ms/100ms=10个   (注:单线程处理单次响应时间为100ms,那计算1秒可处理的次数就是单线程的qps了 )
2、计算200线程处理的qps:   10个*200线程=2000qps

3、2000qps每秒需要的内存:2000qps*10kb=20000kb=20M左右
      注:2G的堆内存 ,新生代大概600M
4、计算2000qps的ygc时间: 600M/20M=30秒
     注:30秒ygc可以接受
5、所以最大支持并发数:2000qps

注:本场景,超过2000qps基本就不能再优化,需要通过加机器的方式来提高并发。


 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值