今天線上業務有些數據查詢非常慢,經排查,發現是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