#24届春招# 面试题
每天100w次登陆请求, 8G 内存该如何设置JVM参数,大概可以分为以下步骤 。有些同学看到这些步骤还是发憷,说的好像是那么回事,一到实际项目中到底怎麽做我还是不知道!光说不练假把式,以登录系统为例模拟一下推演过程: 假设每天100w次登陆请求,登陆峰值在早上,预估峰值时期每秒100次登陆请求。假设部署3台服务器,每台机器每秒处理30次登陆请求,假设一个登陆请求需要处理1秒钟,JVM新生代里每秒就要生成30个登陆对象,1s之后请求完毕这些对象成为了垃圾。一个登陆请求对象假设20个字段,一个对象估算500字节,30个登陆佔用大约15kb,考虑到RPC和DB操作,网络通信、写库、写缓存一顿操作下来,可以扩大到20-50倍,大约1s产生几百k-1M数据。假设2C4G机器部署,分配2G堆内存,新生代则只有几百M,按照1s1M的垃圾产生速度,几百秒就会触发一次MinorGC了。假设4C8G机器部署,分配4G堆内存,新生代分配2G,如此需要几个小时才会触发一次MinorGC。所以,可以粗略的推断出来一个每天100w次请求的登录系统,按照4C8G的3实例集群配置,分配4G堆内存、2G新生代的JVM,可以保障系统的一个正常负载。基本上把一个新系统的资源评估了出来,所以搭建新系统要每个实例需要多少容量多少配置,集群配置多少个实例等等这些,并不是拍拍脑袋和胸脯就可以决定的下来的。JVM参数描述默认推荐-XmsJava堆内存的大小OS内存64/1OS内存一半-XmxJava堆内存的最大大小OS内存4/1OS内存一半-XmnJava堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了跌认堆的1/3sun推荐3/8-Xss每个线程的栈内存大小和idk有关sun2024阿里春招福利:
点赞 9
评论 1
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务