システム:タイプ= PIDFileに分岐

システム:タイプ= PIDFileに分岐

アプリケーションアカウントに対してUnix管理者が有効にした後、次のsystemd --userサービステンプレートを作成しました(わかるように、独自にAnsibleテンプレートから最初に作成されました。なぜなら、RHEL7のsystemd-versionはまだそれを理解していないからです%H)。

[Unit]
Description=%i Secondary Services

[Install]
WantedBy=default.target

[Service]
WorkingDirectory=%h/apps/%i
{% set ICODE = ansible_hostname | upper %}
ExecStartPre=test -d %h/apps/%i/adco/datafiles
ExecStart=/bin/bash ./launchapp /INSTALLATION_CODE:{{ ICODE }}
ExecStop=/bin/bash ./launchapp /INSTALLATION_CODE:{{ ICODE }} -k
Type=forking
PIDFile=%h/apps/%i/logs/{{ ICODE }}.pid
Restart=always
RestartSec=7
StartLimitBurst=0
Nice=7
TimeoutSec=3593

これにより、共有サーバー上のアプリケーションのインスタンスごとに1つずつ複数のサービスを作成できます。この作業は先週、オペレーティングシステムのパッチが出るまで約2ヶ月間行われた。

パッチの後、パッチが適用されたすべてのシステムでサービスが継続的に再起動されます。これは、アプリケーションに問題がなく(変更なし)、プロセスsystemd --user自体が再起動されたためです。

私たちのUnixサポートスタッフは理解しようとしています。なぜそしてそれはできません。ログに記録されるのはすべて「再起動」だけです(RHELは/var/log/messages人間が読むことができず、ルートが必要です)。

彼らが何が起こっているのか理解しようとしている間、私はその行Type=forkingをコメントアウトしました。そして再起動が中断されました!systemctl --user statusすべてのサービスを一覧表示する:systemd --userテンプレートの複数のインスタンスを下から上に一覧表示します。

質問:

  1. systemd --user引き続き再起動すること、私たち自身に何の問題があるかもしれませんか?実行されたアプリケーションはリソース集約的で、約40の大規模プロセスを実行しました。しかし、以前はこの問題は発生しませんでした。たぶん起動するプロセスの数に制限はありますかsystemd --user?それとも総メモリ使用量ですか?それでは、なぜ我々は以前に攻撃しなかったのですか?
  2. Typeコメントアウトが -line に役立つのはなぜですか?
  3. systemdメインプロセス(PIDがPIDファイルに書き込まれている)が消えた場合、それをコメントアウトするのにかかる費用はいくらですか?たとえば、まだ目立つことができますか?再起動時にアプリケーションインスタンスが起動しますか?

関連情報