サービスが非常に長い行を出力した後、Systemdのログ記録は停止します。

サービスが非常に長い行を出力した後、Systemdのログ記録は停止します。

ログを標準エラーとして出力するプロセスがあり、それをsystemd serviceとして実行しますType=simple。フィールドStandardErrorStandardOutputデフォルト値(inheritおよびjournal)のままにしてフィールドを設定しました。SyslogIdentifierしたがって、ログに指定された識別子を持つサービスログを表示したいと思います。

これらのすべてはほとんどの場合うまく機能します。サービスが非常に長いテキスト行(50KB以上)の出力を開始すると問題が発生します。

systemd(またはロギング)が長いログ行を壊しているようです(確かではありませんが、テストによると、制限は48 KBだと思います)。複数のログメッセージに表示されます。しかし、私のサービスがしばらく(少なくとも数時間)実行され、非常に大きな行が出力された後、ログへのロギングは突然停止します。サービスがまだ正常に実行されていることがわかりますが、まだログメッセージを出力していると思いますが(表示しようとしたり表示しない可能性のあるエラーは表示されませんが)、ログは送信されなくなります。ログ。

私は非常に大きなテキストブロック(基本的にはddいくつか)を出力する愚かなシェルスクリプトを使用してこの動作を再現しようとしましたが、単純なテストではこの動作を再現することはできませんでした。/dev/urandombase64 -w0

何が間違っているのか、他のどのテストを実行できるのかを考えてくれてありがとう。

ベストアンサー1

おすすめ記事