centos7内存过高排查

1、top查看

    使用top命令查看系统的状态,M--按内存占用率排序

2、ps查看按内存排序的前2个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -2

[root@VM_42_193_tlinux /var/log]# ps auxw|head -1;ps auxw|sort -rn -k4|head -2

USER      PID %CPU %MEM    VSZ  RSS TTY      STAT START  TIME COMMAND

root    21049  0.1 59.5 9664240 9625952 ?    Ss    2021 645:18 /usr/lib/systemd/systemd-journald

root      4426  0.0 31.4 5453296 5079852 ?    Ssl  2020 718:59 /usr/sbin/rsyslogd -n

从上面可以看出是systemd-journald和rsyslogd两个进程最占内存。

查看当前配置:

*****************rsyslog*****************

[root@VM_17_95_tlinux ~]# cat /usr/lib/systemd/system/rsyslog.service

[Unit]

Description=System Logging Service

;Requires=syslog.socket

Wants=network.target network-online.target

After=network.target network-online.target

Documentation=man:rsyslogd(8)

Documentation=http://www.rsyslog.com/doc/

[Service]

Type=notify

EnvironmentFile=-/etc/sysconfig/rsyslog

ExecStart=/usr/sbin/rsyslogd -n$SYSLOGD_OPTIONS

Restart=on-failure

UMask=0066

StandardOutput=null

Restart=on-failure

[Install]

WantedBy=multi-user.target

;Alias=syslog.service

*****************systemd-journald*****************

[root@VM_17_95_tlinux ~]# cat /etc/systemd/journald.conf | grep Storage

#Storage=auto

[root@VM_17_95_tlinux ~]# ll /var/log/journal

ls: cannot access /var/log/journal: No such file or directory

从上面配置可以看出:

1)没有限制rsyslogd服务的内存使用率。

2)systemd-journald的Storage配置为默认的auto,且没有journal目录,这种情况下,表示日志存在内存中。

3、rsyslogd优化

新增配置到/usr/lib/systemd/system/rsyslog.service的[Service]中,再重启服务:

[root@VM_17_95_tlinux ~]# cat/usr/lib/systemd/system/rsyslog.service | grep Memory

MemoryAccounting=yes

MemoryMax=80M

MemoryHigh=8M

[root@VM_17_95_tlinux ~]# systemctl daemon-reload

[root@VM_17_95_tlinux ~]# systemctl restart rsyslog

4、systemd-journald优化

首先了解Storage配置的各个选项含义:

# man 5 journald.conf

通过查看man手册,你会发现,Storage=的值可以是volatile、persistent、auto、none,但是,默认的是auto。

volatile代表日志只存在内存中,即/run/log/journal/

persistent代表日志只存在磁盘中,即/var/log/journal/

auto代表日志存在磁盘中,或者内存中,这个取决于你是否创建/var/log/journal/目录!!这个也算是一个坑吧,看来大家都需要手动mkdir-p /var/log/journal/,systemctl restart systemd-journald来解放自己的内存了!!!

none,表示,日志不保留,全部drop,只有当你决定不使用systemd-journald的时候,你可以使用!

Storage=auto,根据需要,我们把日志改为存在磁盘中,只需要创建目录/var/log/journal,然后重启服务即可:

[root@VM_17_95_tlinux ~]# mkdir -p/var/log/journal/

[root@VM_17_95_tlinux ~]# systemctl restart systemd-journald

5、处理记录如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容