Back to skills
extension
Category: Development & EngineeringNo API key required

国产信创环境优化SKILL

针对于国产信创环境的优化SKILL,专为国产信创操作系统设计的性能优化工具,支持麒麟V10、统信UOS、深度Deepin等主流国产系统,覆盖鲲鹏/飞腾(ARM64)、龙芯(LoongArch)、海光/兆芯(x86_64)等国产硬件架构。提供CPU调度、内存管理、磁盘I/O、网络协议栈、系统服务精简等全方位优化方案,同时包含人大金仓、达梦等国产数据库及东方通等中间件的专项调优建议,助力信创环境达到最佳运行性能。

personAuthor: FZKKKKhubModelScope

国产信创环境性能优化 SKILL

1. 基本信息

| 项目 | 说明 | |------|------| | 名称 | xinchuang-perf-opt | | 用途 | 指导 AI 或工程师在国产信创环境下对 Java/Spring Boot/MyBatis/LCoder 系统执行系统性性能优化 | | 适用场景 | 系统部署于国产信创基础设施上,出现性能瓶颈或需预防性调优 | | 触发关键词 | 性能优化、性能调优、信创适配、响应慢、并发不足、GC调优、慢SQL、连接池、JVM参数、启动慢、资源加载慢 |

2. 适用范围:国产信创环境

本 SKILL 面向以下典型信创基础设施组合:

2.1 国产 CPU

  • 华为鲲鹏(ARM64)、飞腾(ARM64)、龙芯(MIPS/LoongArch)、海光(x86)、兆芯(x86)
  • 关注点:JIT 编译器兼容性、SIMD 指令集差异、NUMA 架构对 GC 的影响

2.2 国产操作系统

  • 麒麟(Kylin V10)、统信 UOS、中标麒麟、深度(Deepin)
  • 关注点:内核参数(文件描述符、TCP 缓冲区)、系统级线程调度、透明大页(THP)

2.3 国产 JDK

  • 华为毕昇 JDK(BiSheng JDK)、阿里 Dragonwell、腾讯 Kona JDK、中电金信 JDK
  • 关注点:GC 算法支持差异(G1/ZGC/Shenandoah)、JIT 优化能力、JFR 诊断工具可用性

2.4 国产数据库

  • 达梦(DM8)、人大金仓(KingbaseES)、南大通用(GBase)、OceanBase、TiDB、GaussDB
  • 关注点:JDBC 驱动兼容性、SQL 方言差异、连接池心跳语句、分页语法、索引行为

2.5 国产中间件/应用服务器

  • 东方通(TongWeb)、宝兰德(BES)、中创中间件(InforSuite AS)、金蝶天燕(Apusic)
  • 关注点:Servlet 容器线程模型、连接池实现、类加载机制差异

3. 优化目标

按优先级排列:

  1. 降低接口响应时间:P99 响应时间 < 500ms(核心业务接口)
  2. 提升并发吞吐量:在目标并发数下 TPS 满足业务峰值需求
  3. 减少数据库查询耗时:消除慢 SQL(> 1s),关键查询 < 100ms
  4. 优化 JVM GC:Full GC 频率 < 1次/天,Young GC 停顿 < 50ms
  5. 降低内存占用:堆内存利用率稳态 < 75%,无内存泄漏
  6. 提升启动速度:应用冷启动时间 < 60s
  7. 改善前端加载性能:首屏加载 < 3s(含静态资源)

4. 执行流程

阶段一:信息收集与环境确认

Task Progress:
- [ ] 确认信创环境组合(CPU/OS/JDK/DB/中间件具体版本)
- [ ] 收集当前 JVM 启动参数(bin/start.sh 或部署脚本)
- [ ] 收集应用配置(application.yml、mybatis-conf.xml)
- [ ] 收集数据库连接池配置及当前连接数
- [ ] 收集系统资源现状(CPU/内存/磁盘IO/网络)
- [ ] 收集应用日志中的异常和慢请求记录
- [ ] 确认当前性能基线(响应时间、TPS、错误率)

关键命令参考:

# 系统信息
uname -a && cat /etc/os-release
lscpu   # CPU 架构与核数
free -h # 内存
df -h   # 磁盘

# JVM 进程诊断
jps -lvm
jstat -gcutil <pid> 1000 10   # GC 概况
jmap -heap <pid>              # 堆内存分布
jstack <pid> > thread_dump.txt # 线程快照

# 数据库(以达梦为例)
# SELECT * FROM V$SESSIONS WHERE STATE = 'ACTIVE';

阶段二:瓶颈识别

按以下顺序排查:

  1. CPU 瓶颈top -Hp <pid> 定位高 CPU 线程 → jstack 对应线程栈
  2. 内存/GC 瓶颈jstat -gcutil 观察 GC 频率和停顿 → 分析堆转储
  3. 数据库瓶颈:开启慢查询日志 → EXPLAIN 分析执行计划 → 检查连接池等待
  4. IO 瓶颈iostat -x 1 观察磁盘利用率 → 检查日志写入和文件操作
  5. 网络瓶颈ss -s 观察连接状态 → 检查 TCP 参数和带宽
  6. 锁竞争jstack 中查找 BLOCKED/WAITING 线程 → 分析同步代码路径

阶段三:优化实施

根据瓶颈类型,参照第 5 节检查清单逐项实施。每项优化须遵循:

  • 单项变更、逐项验证
  • 记录变更前后的对比数据
  • 涉及配置/脚本变更须提供示例和影响说明

阶段四:验证与回归

Task Progress:
- [ ] 使用压测工具复测(JMeter/wrk/ab)
- [ ] 对比优化前后的性能基线数据
- [ ] 执行核心业务功能回归测试
- [ ] 观察 24h 运行稳定性(GC、内存、连接数趋势)
- [ ] 确认无功能性回归(接口返回值、业务流程正确性)
- [ ] 输出优化报告

5. 检查清单(概要)

详细检查项及示例见 checklist-reference.md

| # | 检查领域 | 关键检查点 | |---|----------|-----------| | 1 | 应用配置 | 端口/上下文路径、LCoder 组件加载、不必要的功能开关 | | 2 | 数据库连接池 | 最大/最小连接数、心跳检测、超时参数、信创DB驱动兼容 | | 3 | MyBatis SQL 与索引 | 慢SQL、N+1查询、批量操作、索引覆盖、分页优化 | | 4 | 缓存使用 | MyBatis 二级缓存、业务热点数据缓存策略 | | 5 | 日志配置 | 日志级别、异步写入、滚动策略、磁盘IO影响 | | 6 | 线程池配置 | Tomcat/Undertow 线程数、业务异步线程池 | | 7 | JVM 参数 | 堆大小、GC 算法、元空间、信创JDK特有参数 | | 8 | 部署启动脚本 | 启动参数完整性、环境变量、优雅停机 | | 9 | 网络与静态资源 | 压缩、缓存头、CDN、资源合并、图片优化 | | 10 | 信创专项适配 | CPU架构兼容、OS内核参数、JDK差异、DB方言 |

6. 输出要求

每次性能优化须产出以下结构化方案:

# 性能优化方案 - [系统名称] - [日期]

## 一、环境信息
- CPU/OS/JDK/DB/中间件版本
- 当前部署架构(单机/集群)
- 性能基线数据

## 二、问题定位
- 瓶颈现象描述
- 诊断数据(截图/日志/指标)
- 根因分析

## 三、优化建议
| 序号 | 优化项 | 预期收益 | 优先级 | 风险等级 |
|------|--------|----------|--------|----------|

## 四、实施步骤
- 每项优化的具体操作步骤
- 配置变更示例(含变更前后对比)
- 注意事项和影响范围说明

## 五、风险评估
- 变更可能引发的副作用
- 对业务功能的影响分析

## 六、回滚方案
- 每项变更的回滚步骤
- 回滚触发条件
- 回滚验证方法

## 七、验证指标与测试方法
| 指标 | 优化前 | 目标值 | 测试工具 | 测试场景 |
|------|--------|--------|----------|----------|

## 八、回归检查
- 核心业务功能验证清单
- 稳定性观察周期和关注指标

7. 约束条件

  1. 功能不变原则:所有优化不得改变业务功能行为,仅改善性能表现。
  2. 变更可控原则
    • 数据库变更(索引、SQL 改写)须提供 DDL/DML 示例,注明锁表风险和执行窗口。
    • 配置变更(application.yml、mybatis-conf.xml)须提供变更前后对比及影响说明。
    • JVM 参数变更须说明适用 JDK 版本,标注信创 JDK 的兼容性差异。
    • 部署脚本变更须提供完整示例脚本,注明对现有进程管理的影响。
  3. 可回滚原则:每项变更必须有对应的回滚方案。
  4. 渐进式原则:一次只调整一个变量,验证通过后再进行下一项。
  5. 信创兼容原则
    • 不引入仅支持 x86 的本地库(如某些 JNI 加速库)。
    • SQL 改写须考虑目标国产数据库的方言差异。
    • JVM 参数须验证在目标信创 JDK 上的可用性(如 ZGC 在部分 JDK 版本不可用)。
  6. 文档化原则:所有变更须记录到优化报告中,便于后续运维追溯。