rsyslog
systemdは他のタイムアウト設定を使用して、システムが再起動されたとき(たとえば、実行して)実行中のデーモンを停止しreboot
ますか?それとも、再起動するとき(たとえば)を使用しますかsystemctl restart rsyslog
?
私が確認したシステムサービスページが見つかりましたが見つかりませんでした。代わりに、オプションTimeoutStopSec
だけが見つかりましたTimeoutStartSec
。オプションを設定しましたが、システムTimeoutStopSec
化されていると思います。可能はい状態を安全に保存し、きちんと終了する前にデーモンを終了します。。
編集1:
@sourcejediが提案したように(ありがとう)、これはrsyslogを実行するデスクトップインストールではなく、rsyslogのUbuntu 16.04サーバーのインストールであることを強調する必要があります。 rsyslogは、クライアントノードからメッセージを受信し、メッセージの終了を要求したときにメモリにまだ大量を保持できます。体系化されました。
このオプションの値をTimeoutStopSec
90秒から240秒に増やして、一部の破損したディスクキューの問題を解決しようとしましたが、それでも関連ログファイルでこのメッセージが何度も観察されました。
rsyslogd: キュー 'strm 0x26b4800'、ファイル '/var/spool/rsyslog/q_ForwardToNode2.00000003' 非追加書き込み用に開かれていますが、すでに 983505 バイトが含まれています。 [v8.29.0はhttp://www.rsyslog.com/e/0を試しました。 ]
アイデアは、システムがコンテンツをディスクに保存している間、辛抱強く、rsyslogを終了できることです。
rsyslogを起動する前に、systemdにアクティブなネットワーク接続を待機させ、別の問題を解決しようとしました。Drop-Ins
このトピックに役立つコンテキストを追加した場合は、参照のために以下に使用する2つのsystemdの内容が含まれていました。
cat /etc/systemd/system/rsyslog.service.d/*.conf | grep -Ev '#|^$'
Github #1656を解決する
[単位] ドキュメント=https://internal/wiki/url/here 以降 = network.target 希望=network.target
Github #1704をリリース
[単位] ドキュメント=https://internal/wiki/url/here [提供する] タイムアウト停止秒= 240
読んでくれてありがとう。
答え1
再起動コマンドを実行すると、systemdはTimeoutStopSec値を無視しますか?
いいえ、それはひどいでしょう。そうではありません。
編集:v233以上のいくつかのシステムバージョンJobTimeoutSec=30min
はreboot.target
。
編集:「システムがディスクにエントリを保存している間、辛抱強くなってrsyslogを終了できるというアイデアです」というメッセージは、rsyslogのバグのようです。
キューのバグを修正しました:無効なファイル書き込みエラーメッセージ#1759#1759
キューがディスクファイルから再起動されると、ほとんどいつも「書き換えのためにファイルが開かれていますが、すでにxxxバイトが含まれています」というメッセージが表示されます。このメッセージはエラーであり、実際のエラー条件を示していません。無効な述語の確認です。
Debian 9のサービスファイルを見るとsyslog.socket
(systemdから提供されています)がありますが、そしてDefaultDependencies=no
。後者の行はコメントアウトされています。最後の2つがなければBefore=shutdown.target
Conflicts=shutdown.target
Don't allow logging until the very end
そしてrsyslog.service はい、syslog デーモンは DefaultDependencies=no
( ) で直ちに再度有効にして終了することができます。 SIGTERMとSIGKILLの間に組み込まれているデフォルトのタイムアウトを使用してください。私の考えには90秒です。systemd-shutdown.service
systemd-shutdown
systemd-shutdown