背景
有个web服务,运行一段时间后,出现cpu逐渐占用高,服务处理请求整体性能下降问题。
异常情况时,
同时jvm的cpu上涨
最终表现为,处理内部逻辑执行耗时变高。
排查原因
原来服务的jvm启动参数带了 -XX:-TieredCompilation (分层编译默认是开启的)
-XX:-TieredCompilation 参数:不开启JVM的分层编译,该参数如果关闭会导致CodeCache变小。
不开启分层编译,jdk1.8 CodeCache默认48M
开启分层编译,CodeCache默认240M
解决方案
1、去除-XX:-TieredCompilation 参数
2、手动增大codecache。
-XX:-UseCodeCacheFlushing
-XX:ReservedCodeCacheSize=256M