Ubuntu 16.04 上的 systemd 日志被截断/丢失

Ubuntu 16.04 上的 systemd 日志被截断/丢失

我正在使用 Ubuntu 16.04 服务器,创建了一个基本的 nodejs 脚本并将其打包在一个简单的 systemd 服务中。

api.service 的内容位于/lib/systemd/system/api.service

[Unit]
Description=api
After=network.target

[Service]
WorkingDirectory=/var/node/api
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5s
StartLimitInterval=60s
StartLimitBurst=5

[Install]
WantedBy=multi-user.target

当我使用 查看日志时journalctl -u api.service -n -f,似乎我的某些脚本输出行没有被记录,特别是当脚本在短时间内生成大量日志行时。

例如,如果 nodejs 脚本只是一个简单的 for 循环,输出前 3000 个整数,则日志中似乎只记录了大约 2500 行。

index.js 的内容位于/var/node/api/index.js

for (var i = 1; i <= 3000; i++) {
    console.log(i);
}
console.log("end of script");

当使用查看日志时journalctl -u api.service -n -f,我只得到大约 2500 行:

May 04 13:52:15 test systemd[1]: Stopping api...
May 04 13:52:15 test systemd[1]: Stopped api.
May 04 13:52:15 test systemd[1]: Started api.
May 04 13:52:15 test node[20993]: 1
May 04 13:52:15 test node[20993]: 2
May 04 13:52:15 test node[20993]: 3
May 04 13:52:15 test node[20993]: 4
May 04 13:52:15 test node[20993]: 5
May 04 13:52:15 test node[20993]: 6
...
...
...
May 04 13:52:16 test node[20993]: 2497
May 04 13:52:16 test node[20993]: 2498
May 04 13:52:16 test node[20993]: 2499
May 04 13:52:16 test node[20993]: 2500
May 04 13:52:16 test node[20993]: 2501

还值得注意的是,即使我使用 setTimeout 延迟它,也不会输出“脚本结束”。

知道这里出了什么问题吗?

答案1

发生这种情况可能是因为 journalctl conf. 检查RateLimitInterval和文件RateLimitBurst中的速率限制。/etc/systemd/journald.conf

相关内容