项目启动时CPU高()-其他
项目启动时CPU高()
- 发布时候load飙高
- 发布时候响应时间飙高
cpu使用率较高的两个线程详细信息
-
“C2 CompilerThread1” daemon prio=10 tid=0x00007fce48125800 nid=0x852 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"C2 CompilerThread1" daemon prio=10 tid=0x00007fce48125800 nid=0x852 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
-
“C2 CompilerThread0” daemon prio=10 tid=0x00007fce48123000 nid=0x851 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLELocked ownable synchronizers:
"C2 CompilerThread0" daemon prio=10 tid=0x00007fce48123000 nid=0x851 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLELocked ownable synchronizers:
C2 CompilerThread线程项目启动初期cpu使用率那么高,它在干什么呢?
解决方案
预热
- 程序主动预热:在启动完成后,程序主动的访问热点的代码,确保主要的热点代码已被编译成机器码后再放入流量,可通过-XX:+PrintCompilation来确认。
- 复制流量预热:通过拷贝一份线上的流量进行预热,完成之后再导入线上流量。
启动多个线程进行编译优化
采用分层编译
- Client模式
- Server模式
- Tiered模式
————————
- 发布时候load飙高
- 发布时候响应时间飙高
cpu使用率较高的两个线程详细信息
-
“C2 CompilerThread1” daemon prio=10 tid=0x00007fce48125800 nid=0x852 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"C2 CompilerThread1" daemon prio=10 tid=0x00007fce48125800 nid=0x852 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
-
“C2 CompilerThread0” daemon prio=10 tid=0x00007fce48123000 nid=0x851 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLELocked ownable synchronizers:
"C2 CompilerThread0" daemon prio=10 tid=0x00007fce48123000 nid=0x851 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLELocked ownable synchronizers:
C2 CompilerThread线程项目启动初期cpu使用率那么高,它在干什么呢?
解决方案
预热
- 程序主动预热:在启动完成后,程序主动的访问热点的代码,确保主要的热点代码已被编译成机器码后再放入流量,可通过-XX:+PrintCompilation来确认。
- 复制流量预热:通过拷贝一份线上的流量进行预热,完成之后再导入线上流量。
启动多个线程进行编译优化
采用分层编译
- Client模式
- Server模式
- Tiered模式