今天线上业务有些数据查询非常慢,经排查,发现是systemd-journald服务占用CPU过高所致
[root@node-63-8 ~]# top top - 15:52:35 up 504 days, 23:33, 1 user, load average: 3.29, 3.34, 3.09 Tasks: 371 total, 3 running, 368 sleeping, 0 stopped, 0 zombie %Cpu0 : 13.9 us, 9.8 sy, 0.0 ni, 69.9 id, 4.4 wa, 0.0 hi, 2.0 si, 0.0 st %Cpu1 : 27.3 us, 33.3 sy, 0.0 ni, 37.4 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 9.2 us, 9.2 sy, 0.3 ni, 80.2 id, 0.3 wa, 0.0 hi, 0.7 si, 0.0 st %Cpu3 : 17.8 us, 7.4 sy, 0.0 ni, 73.2 id, 1.7 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 : 12.5 us, 12.9 sy, 0.3 ni, 68.8 id, 3.1 wa, 0.0 hi, 2.4 si, 0.0 st %Cpu5 : 9.3 us, 13.0 sy, 0.7 ni, 53.7 id, 22.3 wa, 0.0 hi, 1.0 si, 0.0 st %Cpu6 : 10.3 us, 18.7 sy, 0.3 ni, 60.3 id, 9.7 wa, 0.0 hi, 0.7 si, 0.0 st %Cpu7 : 9.4 us, 10.7 sy, 0.3 ni, 66.8 id, 12.1 wa, 0.0 hi, 0.7 si, 0.0 st KiB Mem : 16266144 total, 155284 free, 15481160 used, 629700 buff/cache KiB Swap: 0 total, 0 free, 0 used. 288052 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1551362 root 20 0 48416 4304 3648 R 99.0 0.0 1765:24 systemd-journal 1373291 root 20 0 6733616 6.2g 3068 S 53.3 39.8 2137:06 rsyslogd
临时关闭日志打印服务,先恢复业务,后续再针对优化
[root@node-63-8 ~]# vim /etc/systemd/journald.conf [Journal] Storage=none [root@node-63-8 ~]# systemctl restart systemd-journald
[root@node-63-8 ~]# vim /etc/systemd/journald.conf
[Journal]
#日志存储到磁盘
Storage=persistent
#压缩日志
Compress=yes
#为日志添加序列号
Seal=yes
#每个用户分别记录日志
SplitMode=uid
#日志同步到磁盘的间隔,高级别的日志,如:CRIT、ALERT、EMERG 三种总是实时同步
SyncIntervalSec=1m
#即制日志的最大流量,此处指 30s 内最多记录 100000 条日志,超出的将被丢弃
RateLimitInterval=30s
#与 RateLimitInterval 配合使用
RateLimitBurst=100000
#限制全部日志文件加在一起最多可以占用多少空间,默认值是10%空间与4G空间两者中的较小者
SystemMaxUse=64G
#默认值是15%空间与4G空间两者中的较大者
SystemKeepFree=1G
#单个日志文件的大小限制,超过此限制将触发滚动保存
SystemMaxFileSize=128M
#日志滚动的最大时间间隔,若不设置则完全以大小限制为准 MaxFileSec=1day #日志最大保留时间,超过时限的旧日志将被删除 MaxRetentionSec=100year #是否转发符合条件的日志记录到本机的其它日志管理系统,如:rsyslog ForwardToSyslog=yes ForwardToKMsg=no #是否转发符合条件的日志到所有登陆用户的终端 ForwardToWall=yes MaxLevelStore=debug MaxLevelSyslog=err MaxLevelWall=emerg ForwardToConsole=no #TTYPath=/dev/console #MaxLevelConsole=info #MaxLevelKMsg=notice