修复生产报表负载根因 #257

Merged
WuYongJie merged 1 commits from hotfix/WuYongJie-report-root-cause into main 2026-09-23 20:16:00 +08:00
Owner

根因

  • 共享 MariaDB 仅分配 2 核/1.5GB,却同时承载系统配置与千万级报表。
  • 进销存和淘系支付宝缓存失效时,并发请求会重复执行同一条重查询。
  • 店铺经营报表被放在每分钟任务中;即使没有新增,也反复回看 5 万行,并在完成时对约 1500 万行执行 COUNT(*)。

修复

  • 报表聚合增加跨进程单次计算锁,稳定缓存键,延长与数据刷新节奏匹配的缓存时间。
  • 每日进销存同步成功后自动预热默认报表。
  • 店铺经营报表从每分钟公共链路拆出,改为每 15 分钟执行,每轮覆盖完整回看窗口。
  • 同步批次按受影响主键增量维护精确行数,移除完成阶段的事实表全量 COUNT(*)。
  • 共享 MariaDB 调整为 4 核/6GB、4GB buffer pool,并启用 5 秒慢查询日志。

验证

  • 78 项相关测试、670 个断言通过。
  • PHP 语法检查通过;Compose YAML 结构解析通过;新预热命令已完成 Artisan 注册检查。

发布影响

  • 不含数据库迁移。
  • 发布时 config_db 会重建一次以应用资源和慢日志参数。
  • 涉及生产配置与镜像同步调度,不修改原始业务/财务数据。
## 根因 - 共享 MariaDB 仅分配 2 核/1.5GB,却同时承载系统配置与千万级报表。 - 进销存和淘系支付宝缓存失效时,并发请求会重复执行同一条重查询。 - 店铺经营报表被放在每分钟任务中;即使没有新增,也反复回看 5 万行,并在完成时对约 1500 万行执行 COUNT(*)。 ## 修复 - 报表聚合增加跨进程单次计算锁,稳定缓存键,延长与数据刷新节奏匹配的缓存时间。 - 每日进销存同步成功后自动预热默认报表。 - 店铺经营报表从每分钟公共链路拆出,改为每 15 分钟执行,每轮覆盖完整回看窗口。 - 同步批次按受影响主键增量维护精确行数,移除完成阶段的事实表全量 COUNT(*)。 - 共享 MariaDB 调整为 4 核/6GB、4GB buffer pool,并启用 5 秒慢查询日志。 ## 验证 - 78 项相关测试、670 个断言通过。 - PHP 语法检查通过;Compose YAML 结构解析通过;新预热命令已完成 Artisan 注册检查。 ## 发布影响 - 不含数据库迁移。 - 发布时 config_db 会重建一次以应用资源和慢日志参数。 - 涉及生产配置与镜像同步调度,不修改原始业务/财务数据。
WuYongJie added 1 commit 2026-09-23 20:14:57 +08:00
WuYongJie merged commit 374df29d2b into main 2026-09-23 20:16:00 +08:00
WuYongJie deleted branch hotfix/WuYongJie-report-root-cause 2026-09-23 20:16:01 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WuYongJie/CaiWuXiTong#257
No description provided.