排查问题

使用top 再按大写M, 对内存采用降序显示,一目了然看到谁占用内存最高。

image-20201016104223772

定位到rsyslogd进程占用内存25.7%,非常可怕,需要急需解决掉它。

什么是rsyslog: 系统提供的多线性日志系统,参考: https://www.rsyslog.com/

解决问题

rsyslogd是它的守护进程,可以通过systemctl status rsyslog 查看运行状态

image-20201016110056427

红色显示错误信息。

  1. 使用journalctl --verify 检查系统日志卷文件损坏情况

    如果检查出来有红色的文件,则直接删除即可。

  2. 删除/var/lib/rsyslog/imjournal.state 文件

  3. 重启rsyslogd进程, systemctl restart rsyslog

然后使用 top 查看,内存占用率是否没有啦。

避免再次发生

  1. 修改/etc/rsyslog.conf 文件

    最后行添加2行代码

    $imjournalRatelimitInterval 0
    $imjournalRatelimitBurst 0
    

    重启服务:systemctl restart rsyslog

  2. 关闭 journal 压缩配置

    vim /etc/systemd/journald.conf
    # 找到 #Compress=yes 修改成 no
    Compress=no
    # 重启服务
    systemctl restart systemd-journald