我正在运行一项服务。该服务调用一个长时间运行的 python 脚本,该脚本“打印”一些状态消息。我可以通过
journalctl -u myservice.service
查看这些状态消息。但大约 6 小时后,我无法再看到该服务的新输出。
如果我跑步
systemctl status myservice.service
。我可以看出服务仍在运行。
我怀疑它必须对日志记录做一些事情,所以我将日志输出的时间间隔从每分钟一次减少到每10秒一次。公平地说,问题仍然出现,但仅仅 1 小时后。因此,似乎我在日志空间或日志轮换方面遇到了问题。有人可以帮我解决这个问题吗?
我开始查看
journald.conf
文件,内容如下所示。
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
我尝试更改以下内容,然后运行
sudo systemctl restart systemd-journald.service
但没有成功。
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
SystemMaxUse=1G # Increase to allow more disk space for logging
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
MaxRetentionSec=1month # Retain journal files for up to one month
MaxFileSec=1week # Keep individual journal files for up to one week
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
有什么想法吗?
我遇到了类似的问题,由于 RateLimitInterval 窗口内收到的消息量,我的服务日志被抑制。但如果总是正好 6 小时...就很奇怪了。
是否有 RateLimitInterval / RateLimitBurst 在某处配置错误?您是否注意到系统日志/日志中有任何抑制消息?类似于
systemd-journal[xxxx]: Suppressed <number> messages from <your_service>.
?LogRateLimitIntervalSec=
和/或 LogRateLimitBurst=
为自身提供速率限制?因为在这种情况下,这些值会覆盖日志配置中指定的设置。RateLimitInterval=0s
RateLimitBurst=0
完全禁用它们(只是为了调试:那么你应该调整它),也许你还可以增加
的大小RuntimeMaxUse
并且,如果您认为 SystemMaxUse 和 RuntimeMaxUse 配置的默认值的八分之一还不够,您还可以增加
SystemMaxFileSize
RuntimeMaxFileSize
(参考。https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html)