问题描述
如图,达到10000条以后,实测事件产生非常慢,新产生事件把旧事件挤掉
我看用户指南里没有说这种情况下的解决方案,是只能清空事件么?不能像日志一样压缩存储么
答案内容由AI生成,仅供参考:
四、总结
根据您提供的上下文信息,系统事件日志达到上限后的行为取决于记录方式,并且系统中存在转储机制,但并非像日志文件那样自动压缩存储。以下是详细说明:
系统事件日志支持两种存储方式(可在 Web 界面“记录方式”处切换):
| 记录方式 | 行为特性 | 存储结果 |
|---|---|---|
| 线性记录 (Linear Recording) | 所有事件按发生后追加写入,永不覆盖;需要手动清理或转储来释放空间 | 完整保留所有历史事件,但存储空间会持续增长 |
| 循环记录 (Circular Recording) | 当存储容量(如 MaxEventCount 默认 10000 条)满时,新事件会自动覆盖最早的事件,保持总条目数固定 |
滚动保留最近的事件,不需要手动清空 |
您截图中显示的是 循环记录(● 循环记录),因此当达到 10000 条上限时,新事件会挤掉旧事件(即覆盖旧日志)。这本身是循环记录的预期行为——并非只能清空,而是系统自动通过覆盖来维持日志容量。
event.db(位于 AppDump/event/ 目录)中,采用结构化数据库而非纯文本文件。根据上下文,Events 类中有一个属性 DumpRecord(U64 类型),描述为:
“SEL日志转储的总量,每次转储均会累加该属性,同时具有PoweroffPer持久化特性,重启后数据保留。”
这表明系统支持对事件日志进行转储操作(可能是手动触发或通过特定方法实现),转储后的数据会被持久化保存(即使在系统重启后)。
但上下文未明确说明转储是否会自动生成压缩文件,也未提供转储的具体操作方法(如 Web 界面按钮或 IPMI 命令)。
| 您的实际需求 | 可用的解决方案 | 说明 |
|---|---|---|
| 希望保留历史事件,不被覆盖 | 将记录方式切换为 线性记录,并定期手动转储(使用 DumpRecord 相关机制)或备份 event.db |
线性记录不会自动覆盖,但需注意存储空间;可通过转储导出历史数据 |
| 希望旧事件被自动覆盖,但性能更流畅 | 保持循环记录,检查 MaxEventCount 是否合理(默认 10000) |
若事件产生极快导致覆盖时写入慢,可考虑减小该值,但会失去更多历史信息 |
| 希望像系统日志一样自动压缩归档 | 当前功能不支持。系统事件非文本日志,需等待固件功能扩展或通过外部工具(如脚本)定期导出并压缩 event.db |
可参考社区讨论(如 discobot 提供的链接:https://discuss.openubmc.cn/t/topic/1693 和 https://discuss.openubmc.cn/t/topic/2124)获取更多信息 |
(注:以上所有信息均基于所提供的知识图谱和文档块内容,未引入外部知识。)
是的,如果选择“线性记录”,则10000条后不再记录。如果选择“循环记录”,则10000条后新产生事件把最早的旧事件挤掉
也没有办法主动转储么
当前没有