亿级流量的秒杀系统jvm调优

  • Post author:
  • Post category:其他


1.什么是Keepalive 长连接?

所谓的长连接就是保持一个连接长时间不释放, 让其他请求线程可以进行复用; 达到资源复

用的情况

2.Jmeter 长连接

Jmeter 连接服务端进行压力测试的时候, 使用就是 keepavlie 长连接, 在高并发模式下, 保

证连接具有复用性

3.keepalive 连接越多越好? ?

keepalive 连接本身消耗大量资源; 如果不能及时释放, 系统 TPS 上不去, 因此需要

设置合理的 keepalive 连接数, 以及连接的超时时间;

4.Undertow

Undertow 是一个轻量级 servlet 服务器,tomcat 也是一个 servlet 服务器; undertow比 tomcat 更加轻量级, undertow 非常专一, 没有任何可视化的组件, 专注于 Servlet 容器领域; 因此 undertow 性能略好于 tomcat 服务器

5.为什么要进行 JVM 调优

1、 垃圾对象太多(java 线程, 对象占满内存), 内存被占满了, 程序跑不动了!! — 程序

性能严重下降

2、 垃圾回收线程太多, 频繁回收垃圾(垃圾回收线程也会占用内存资源, cpu 资源), 必然

会导致程序的性能下降

3、 垃圾回收导致 STW(stop the world)

jvm 调优本质是什么? ?

垃圾回收, 及时回收占用内存的垃圾对象, 及时释放掉内存空间

6.JVM 调优原则

gc 时间足够小 (堆内存设置足够小)

gc 次数足够少 (堆内存设置足够大)

发生 full gc 周期足够长 (最好不发生)

* metaspace 永久代空间合理, 永久代一旦扩展, fullgc 一定会发生

* 老年代空间设置稍微大一些, 防止 fullgc 发生

* 尽量让垃圾对象在年轻代被回收(90%)

* 尽量防止大对象的产生, 一旦大对象多了以后, 就可能发生 fullgc,甚至会发生 oom

7.如何进行调优

典型的参数设置: 4cpu,8GB

1、 -Xmx4000M 设置 JVM 堆内存最大值( 经验值的设置 3500MB-4000MB, 内存设置的

大小, 没有固定的设置, 根据业务实际情况进行设置, 根据压力测试情况, 在线上运行一段

时间(7 天, 30 天), JVM 内存进行不断的调试)

2、 -Xms4000M 设置 JVM 堆内存的初始化内存(一般情况下, 都必须和最大内存设置

为一致, 防止内存抖动)

3、 -Xmn2g 设置年轻代大小(eden,s0,s1)

4、 -Xss256k 设置线程栈的大小, JDK1.5+版本线程栈默认是 1MB, 相同的内存情况下,

线程对象越小, 操作系统会创建更多性能, 系统性能会更好

nohup java -Xmx4000m -Xms4000m -Xmn2g -Xss256k -jar book-1.0-SNAPSHOT.jar &

GC 日志输出

-XX:+PrintGCDetails-XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:jvm.log

full gc 调优

为什么会一开始就发生 5次 full gc ??

查看一下内存模型情况: 可以看一下那些内存区域被占满了!! 占用比较多

排查命令: jstat -gcutil PID

MetaSpace 发生了扩容现象; MetaSpace 每扩容一次, 就会发生一次 fullgc; 因此要避免

由于 metaspace 引起的 fullgc,必须对 metaSpace 元数据空间大小进行设置一个合理的值

-XX:MetaspaceSize=256m

YONG&OLD 比例

年轻代, 老年代 大小比例的设置, 到底设置多少才更为合适呢? ? ?

比例设置参数: -XX: NewRatio = 4 ,

1、 youg gc — 尽量让垃圾在 young 被回收

2、 尽量减少 full gc

eden ,s0 ,s1 区域内存比例应该如何进行设置

-XX:SurvivorRatio=8

并行垃圾回收器组合, 并行垃圾回收器有哪些? ?

年轻代: ParNew , Parallel Scavenge

老年代: Parallel Old

吞吐量优先

-XX:+UseParallelGC -XX:+UseParallelOldGC

响应时间优先

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC

因此可以发现 ps+po是比较好的组合



版权声明:本文为u012222011原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。