JVM系统优化实践(4)以支付系统为例
您好,我是湘王,这是我的头条号「湘王说」,欢迎您来,欢迎您再来~
前面说过,JVM会将堆内存划分为年轻代、老年代两个区域。年轻代会将创建和使用完之后马上就要回收的对象放在里面,而老年代则将创建之后需要长期存在的对象放在里面。那么现在再来看一个比较具体的例子。
在电商系统中,支付系统大概处于这样的位置:
核心业务流程是:
假设日活在100W,那么JVM会创建和销毁100万个支付订单。那么问题来了:
1、需要部署多少台机器?
2、每台机器需要多大内存?
3、每台机器上启动的JVM需要分配多大堆内存空间?
4、JVM需要分配多大内存空间才能保证不会崩溃?
假设现在面试官坐在你对面,这灵魂四连问,你该怎么回答?
所以,需要合理地设置JVM堆参数,依据是:
首先要明确的,就是每秒钟要处理多少笔订单,这里是100万笔,那么:
1、每天100万单,都分别在两个高峰期:中午和下班后,每个高峰持续2小时,就是:2 × 2 = 4小时;
2、4小时 = 4 × 3600 = 14400秒;
3、100万 ÷ 14400秒 = 69.4单/秒,将系统性能弄紧凑一些,可以按150单/秒算;
4、假设支付系统部署了3台机器,且采取流量均分策略,那么每台机器至少每秒需要处理50个订单:支付订单请求 -> JVM创建支付订单对象 -> 写入数据库 -> 处理其他事务 -> 返回数据(不含网络请求时间损耗),假设理想状态下需要花费20毫秒时间,那么:
l 接收到50笔支付订单请求 -> 在JVM年轻代中创建50个订单支付对象 -> 50 × 20毫秒=1秒之后处理完毕
l JVM将引用收回,这些对象就成了年轻代中的垃圾对象
l 下一秒继续重复上述过程
5、每笔支付订单所需的内存空间,依据实例对象及变量类型计算:
l 每个实例对象的Java基本类型所占据的空间 + 引用对象所占据的空间 ≈ 1KB;
l 50笔支付订单 = 50K内存空间;
6、JVM中的对象创建持续累积:
按照每秒消耗50KB的速度,如果没有垃圾回收,那么一台内存8G的机器大概会经过46个小时之后,将内存耗尽(8 × 1024 × 1024K = 8388608 / 50 = 167772 秒 / 3600 = 46小时);
服务器肯定不会将全部内存给应用运行,最多20%~40%,资源实际耗尽时间更短;
此时,垃圾回收出现,清场,腾位置,应用继续运行,这个过程循环往复;
7、真实的系统资源消耗,会比理想条件下的预估高出20倍以上。
所以,这里给出建议的配置方案:
1、无脑化通用配置:2C4G/4C8G;
2、建议有条件,只考虑4C8G及以上(硬件成本还会继续下降);
3、单台:-Xms3072M -Xmx3072M -Xmn2048M;
4、如果业务量更大,可以不只部署3台,可以是5台,10台或更多。
大促期间,访问量暴增10~100倍,因为压力骤增,部分请求出现超时甚至卡死、挂掉。这部分特别慢且未被释放的请求,可能会被GC误移入老年代,导致老年代里也出现越来越多的垃圾对象,由此:
年轻代资源不足 -> 年轻代频繁GC -> 老年代资源不足 -> 老年代频繁GC
依据经验,一般情况下:
JVM栈上线初期:512K~1M足够
永久代上线初期:512M~1G足够
FAQ:
1、方法执行完后,栈帧立马出栈,因此该栈帧中的变量等数据立即就被回收了;
2、项目中托管给Spring管理的对象,带@Configration的都是长期存在于老年代;
3、自定义的bean对象如果不被定义为类对象就是朝生夕灭的,分配在年轻代中;
4、内存不够才会回收软引用对象,内存空间足够的话,不会回收软引用对象;
5、弱引用不管内存空间够不够,只能撑到下次垃圾回收之前,就被会回收;
6、垃圾回收的是软引用,弱应用和虚引用;
7、并不是新生代全部占满才minor gc,而是只要里面一块主要的内存区域满了就minor gc;
8、通过合理的估算方式尽量设大新生代 ,让系统在高峰期不进行垃圾回收。
感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~
我在头条
青海甘肃旅游攻略有哪些?甘肃的天气变化是怎样的?选择来甘肃青海旅游,这绝对是一个好主意。来这边会让你不虚此行,可以说,这里你能看到除了大海以外的森林草原湖泊雪山沙漠戈壁等各种地貌类型,体验浓浓的民族风情和宗教气氛。一甘肃青海这边
梅州兴宁有什么风景区?兴宁市兴宁市地处粤东北部,古称齐昌府,历史悠久,文化发达,工商兴旺,国道横跨腹地,广梅汕铁路贯穿其中,历来是粤赣闽三省商品集散地和陆路交通枢纽,总面积平方公里。气候温和,名优土特产
山西的古建筑,你知道哪些?包括寺庙,红色景点,历史古迹等?谢谢邀请。过去有一句老话,地下的文物看陕西,地上的文物看山西,如果要是说山西的古建筑,那么在目前国内保存实物最多的可能都在山西了吧。寺庙最有名的我觉得应该是以五台山为基础。这里是国
为何浙江女排能彻底打懵天津女排?穿越了啦?就目前的情况来看,浙江女排要想打懵天津女排只有两个办法,那就是做梦吧,梦里你想咋赢天津女排都行,可以做个惊险的梦,32险胜,因为最后一局天津女排懵掉了所以输了,也可以做一
剖腹产刚生下几小时的孩子,被孩子奶奶抱去吃她女儿奶水合适吗?换个角度想想,第一你剖腹产手术后的几个小时正需要静养,因为麻药还没过,有可能那个时候你正好睡着了,婆婆不想打扰你,于是自己决定了。第二开奶需要时间,刚下手术台的确不怎么有奶,婆婆担
怎么样让孩子口算更快些不用掰手数?大家好,我是一名小学数学教师,对于这个问题可以谈谈自己的一些见解,但是仅供大家参考交流。回答问题之前,我首先想知道您的孩子是多大,您问这个问题,我估计您的孩子应该处于以下三个阶段中
手机上有什么不吃配置又好玩的游戏?手机虽然比不上电脑的性能,但是好玩的游戏却也不少,我就简单介绍几款吧,手机配置中等偏下就可以良好运行。60秒大冒险这是一款以生存逃亡为题材的模拟手游,在核弹袭来之前,玩家有60秒的
你手机里面有哪些装机必备的软件?1。社交软件微信QQ2。视频软件哔哩哔哩优酷腾讯视频抖音3。网盘百度网盘腾讯微云4。新闻搜索软件今日头条UC浏览器百度5。购物软件淘宝京东拼多多咸鱼6。学习软件keep金山词霸可可
求分享手机摄影作品?我的家乡内蒙古自治区呼伦贝尔根河市,中国冷极。这里年平均气温零下5。3c,自然风貌,博大壮观。用华为手机vota拍摄的央视影视基地三国水浒景区吴营水寨落日晚霞。请各位老师指教。南太
拼夕夕每天发广告9。9秒杀手机,真的有人抢到吗?这样玩违规不?我觉得这种是诱骗欺诈行为,9,9一辆汽车开回家,也太明显了吧,包括淘宝阿里巴巴货拉拉都涉嫌诱骗虚假宣传,就像货拉拉,广告里的人辞去工作去做货拉拉养家,这种欺骗行为很容易造成社会的不
王者荣耀哪些皮肤属于良心皮肤?在王者荣耀中有些皮肤的特效非常的好看,甚至可以说完美!给大家说几个我个人比较喜欢的完美皮肤。第一个就是大部分国服玩家都喜欢的孙悟空大圣娶亲皮肤,这个皮肤从模型到特效都和以前的猴子皮