作者:Eddy  历史版本:1  最后编辑:Eddy  更新时间:2024-10-24 16:08

编写版本:v3.3.7
适用版本:所有版本

程序优化

  1. 遵循分布式应用方式部署

    • 每个应用都独立部署,将IO分摊到不同机器;
    • 特别是数据库的IO瓶颈问题,将不同数据库都独立服务器部署,将IO分摊到不同机器;
  2. 将应用日志输出级别调整为warn或以上级别,项目中的log4j2.yml文件中修改相关配置;

  3. application.yml文件中添加authorization.permission-filter-enable: false,关闭接口权限校验,减少请求处理时间;此处只是关闭接口权限,并不是关闭令牌校验,访问系统还是需要令牌的关闭该参数风险:会出现越权问题

  4. 业务表(由业务对象创建的数据表)自行添加关键索引;

  5. application.yml文件中添加authorization.log-api-invoke.enable: false,关闭接口日志记录,减少数据库压力;3.3.7+新增功能

  6. 使用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
  7. 高并发场景下一级缓存会造成FullGC频繁,可以选择禁用一级缓存,但会给二级缓存造成更大压力(可以提供redis性能来弥补),不一定能提升性能(慎重,已知影响:流程接口性能会下降) 3.4.0+

  8. Oauth2服务开启本地缓存com.lc.context.user.enabled: ${CONTEXT_USER_ENABLED:true}3.4.0+新增功能

  9. Platform服务开启本地缓存com.lc.context.party.enabled: ${CONTEXT_PARTY_ENABLED:true}3.4.0+新增功能

  10. 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}
  11. Business服务开启J2cache二次缓存com.lc.context.datatemplate.data.builder.enabled: ${CONTEXT_DATATEMPLATE_DATA_BUILDER_ENABLED:true}3.4.0+新增功能

  12. 开启缓存初始化加载器,http://doc.bpmhome.cn/docs/ibps_v3_deploy/ibps_v3_deploy-1dcjge03iaqdu 3.4.4+新增功能

  13. 二次缓存配置cache.short.enabled: ${CACHE_SHORT_ENABLED:true} 3.5.0+新增功能

  14. 修改文件application-common.yml中的配置aop.method.signature.open: false 3.5.0+新增功能

  15. 开启web容器的gzip压缩功能,在文件application-common.yml中的配置server.compression.enabled: true 3.5.2+新增功能<适用所有版本>

  16. 后端服务使用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}
  17. mysql判断为空不为空的表达式优化

    TASK_ID_ is null #效率较低
    length(TASK_ID_) is null #效率较高,建议使用这种方式判断
    TASK_ID_ is not null #效率较低
    length(TASK_ID_) is not null #效率较高,建议使用这种方式判断
  18. 远程服务调用合并,将同一个资源的多次请求合并成一次,需要全面分析代码。

  19. 流程脚本使用预编译方式

  20. 设置流程快捷查询

    • business服务设置启动参数AUTO_SYNC_TASK_PENDING_OPEN=true