You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Particular ServiceControl Audit数据库(Raven5)持续膨胀?

解决Particular.ServiceControl.Audit v4.26(RavenDB 5.4 Voron引擎)审计数据库无限膨胀的问题

一、确认保留策略配置的有效性

  • 检查AuditRetentionPeriod配置是否生效:
    1. 打开ServiceControl.Audit的配置文件(如ServiceControl.Audit.exe.config),确认ServiceControl.Audit/AuditRetentionPeriod的值为1.00:00:00(代表1天);若使用环境变量,需确认SERVICECONTROL_AUDIT_AUDITRETENTIONPERIOD变量设置正确。
    2. 重启ServiceControl.Audit服务,确保配置加载完成。
  • 调整保留策略执行频率:默认清理任务每天运行一次,可通过ServiceControl.Audit/RetentionCheckInterval缩短间隔(如设置为01:00:00,每小时执行一次),加速过期数据清理。
  • 注意:Voron引擎删除数据后不会立即释放磁盘空间,清理任务仅标记数据为删除,需后续压缩操作回收空间。

二、通过离线压缩回收Voron磁盘空间

在线压缩因ServiceControl运行时的资源锁容易卡住,推荐使用更可靠的离线压缩:

  1. 完全停止ServiceControl.Audit服务,通过任务管理器确认ServiceControl.Audit.exe进程已终止,无进程占用数据库文件。
  2. 获取与当前RavenDB 5.4版本匹配的RavenDB命令行工具。
  3. 执行离线压缩命令:
    raven.cli.exe database compact --database-path="你的审计数据库实际路径" --offline
    
  4. 压缩完成后,重新启动ServiceControl.Audit服务。
  • 注意:离线压缩需要目标磁盘有额外临时空间(约为当前数据库大小的10%-20%),需确保磁盘余量充足。

三、从源头减少审计数据写入量

  • 配置审计消息过滤:通过ServiceControl.Audit/FilterAuditMessages添加规则,过滤无需审计的消息,示例配置:
    <add key="ServiceControl.Audit/FilterAuditMessages" value="Type != 'UnnecessaryMessageType' AND Endpoint != 'TestEndpoint'" />
    
  • 启用审计采样:若无需全量审计,配置ServiceControl.Audit/AuditSamplingSettings设置采样率,示例:
    <add key="ServiceControl.Audit/AuditSamplingSettings/SampleRate" value="0.1" /> <!-- 仅保留10%的审计事件 -->
    

四、长期维护建议

  • 定期执行离线压缩:在业务低峰期(如凌晨)设置计划任务,自动完成「停止服务→执行压缩→重启服务」的流程,避免影响业务。
  • 监控磁盘使用:配置磁盘告警,当数据库占用达到阈值时触发清理或压缩操作,提前避免磁盘耗尽。

内容的提问来源于stack exchange,提问作者Frederik Struck-Schøning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:40:23