问题描述
在使用koca-crypto 2.6.0 之前的版本中,压测导致CPU利用率上不去。
根本原因
koca-crypto 使用 jasypto-spring-boot 实现配置项加密,koca 2.6.0 及之前版本试用的是 jasypto-spring-boot 3.0.3
在使用jasypt-spring-boot 3.0.3版本中,大量的Http请求都会触发publishRequestHandledEvent事件
RefreshScopeRefreshedEventListener恰好监听这类事件,如果如下两个类不存在的话,
ClassUtils.forName调用效率极低,一直处于BLOCKED状态
修复方案(二选一)
- 1 koca-crypto升级到2.7.0 版本
- 2 在工程的pom.xml中指定jasypto-spring-boot的版本号为 3.0.4 ,如下
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
特别说明
进行压测时,需要将koca 提供的bootapp的日志级别设置为ERROR, 具体操作如下:
找到 bootapp/src/resouces/logback-spring.xml 将
<logger name="com.szkingdom" level="DEBUG"/>
修改为:
<logger name="com.szkingdom" level="ERROR"/>