编写版本:v3.3.7
适用版本:所有版本
程序优化
遵循分布式应用方式部署
- 每个应用都独立部署,将IO分摊到不同机器;
- 特别是数据库的IO瓶颈问题,将不同数据库都独立服务器部署,将IO分摊到不同机器;
将应用日志输出级别调整为warn或以上级别,项目中的
log4j2.yml
文件中修改相关配置;application.yml文件中添加
authorization.permission-filter-enable: false
,关闭接口权限校验,减少请求处理时间;此处只是关闭接口权限,并不是关闭令牌校验,访问系统还是需要令牌的
;关闭该参数风险:会出现越权问题业务表(由业务对象创建的数据表)自行添加关键索引;
application.yml文件中添加
authorization.log-api-invoke.enable: false
,关闭接口日志记录,减少数据库压力;3.3.7+新增功能使用Spring-jdbc NamedParameterJdbcTemplate和mysql-connector-java,并且我在几乎每一个时间都会发出大量的“额外”SQL声明全部看起来像”SHOW FULL COLUMNS FROM …”
- 在数据库链接后面添加参数
useDynamicCharsetInfo=false
- 例:
jdbc:mysql://192.168.3.240:3306/ibps_business_v3_optimize_05?useDynamicCharsetInfo=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=CTT
- 在数据库链接后面添加参数
高并发场景下一级缓存会造成FullGC频繁,可以选择禁用一级缓存,但会给二级缓存造成更大压力(可以提供redis性能来弥补),不一定能提升性能(慎重,已知影响:流程接口性能会下降) 3.4.0+
Oauth2服务开启本地缓存
com.lc.context.user.enabled: ${CONTEXT_USER_ENABLED:true}
3.4.0+新增功能Platform服务开启本地缓存
com.lc.context.party.enabled: ${CONTEXT_PARTY_ENABLED:true}
3.4.0+新增功能Platform服务开启J2cache二次缓存3.4.0+新增功能
com.lc.context.dictionary.enabled: ${CONTEXT_DICTIONARY_ENABLED:true} com.lc.context.role.resources.enabled: ${CONTEXT_ROLE_RESOURCES_ENABLED:true}
Business服务开启J2cache二次缓存
com.lc.context.datatemplate.data.builder.enabled: ${CONTEXT_DATATEMPLATE_DATA_BUILDER_ENABLED:true}
3.4.0+新增功能开启缓存初始化加载器,http://doc.bpmhome.cn/docs/ibps_v3_deploy/ibps_v3_deploy-1dcjge03iaqdu 3.4.4+新增功能
二次缓存配置
cache.short.enabled: ${CACHE_SHORT_ENABLED:true}
3.5.0+新增功能修改文件
application-common.yml
中的配置aop.method.signature.open: false
3.5.0+新增功能开启web容器的gzip压缩功能,在文件
application-common.yml
中的配置server.compression.enabled: true
3.5.2+新增功能<适用所有版本>后端服务使用HikariCP连接池,相关配置在
application-common.yml
文件中; 3.5.2+新增功能com.lc.db.datasources.druid-enabled: ${DATASOURCES_DRUID_ENABLED:false} com.lc.db.datasources.hikari-enabled: ${DATASOURCES_HIKARI_ENABLED:true}
mysql判断为空不为空的表达式优化
TASK_ID_ is null #效率较低 length(TASK_ID_) is null #效率较高,建议使用这种方式判断 TASK_ID_ is not null #效率较低 length(TASK_ID_) is not null #效率较高,建议使用这种方式判断
远程服务调用合并,将同一个资源的多次请求合并成一次,需要全面分析代码。
流程脚本使用预编译方式
设置流程快捷查询
- business服务设置启动参数
AUTO_SYNC_TASK_PENDING_OPEN=true
- business服务设置启动参数