如何释放 systemd-journal 占用的内存

type
Post
status
Published
date
Jun 23, 2023
slug
systemd-journal
summary
tags
Linux
Server
Memory
icon

查看内存占用

使用 ps aux --sort -rss 查看系统内存占用,发现 systemd-journal 占用很多内存
notion image

清理

  • 清除到只剩下最新的 100M 空间:journalctl --vacuum-size=100M
  • 清除到只剩下最近两小时:journalctl --vacuum-time=2h
  • 将内存盘中的数据刷到硬盘:journalctl --flush
  • 或者采用很黄很暴力的清除方法(不推荐):rm -rf /run/log/journal && systemctl restart systemd-journal

解决方法

修改 /etc/systemd/journald.conf 配置
Storage=
  • volatile,journal 将会保存在内存中,使用位于内存盘的 /run/log/journal 目录(会自动创建)
  • persistent,journal 将会保存在磁盘中,使用 /var/log/journal 目录 (会自动创建),如果自动创建失败,以及针对启动早期磁盘尚未挂载成功的部分日志, 仍然记录在内存盘。
  • auto,那么,如果 /var/log/journal 目录存在,则使用该目录记录到磁 盘,如果目录不存在(不会自动创建),则使用内存盘。
  • none,完全不记录任何日志(但是仍然可以转发给 rsyslog)
  • 默认是 auto
 
SystemMaxUse 是指日志占用磁盘空间的最大限制。例如,如果您希望系统最多使用 10GB 的空间来存储日志,可以将其设置为 SystemMaxUse=10G
RuntimeMaxUse 是指 journald 运行时允许使用的空间上限。例如,如果您希望 journald 最多使用 1GB 的内存来缓存日志,可以将其设置为 RuntimeMaxUse=1G
默认情况下,SystemMaxUse 和 RuntimeMaxUse 都被设置为系统最大可用内存和磁盘空间的 10%。
 
重启 systemd-journal
 

© insv 2021 - 2023