Усеченные / отсутствующие журналы с systemd в Ubuntu 16.04

Я использую сервер 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 ответ

Решение

Это происходит, вероятно, из-за ограничения скорости в журнале conf. Проверьте RateLimitInterval а также RateLimitBurst в /etc/systemd/journald.conf файл.

Другие вопросы по тегам