SSHによって開始されたプロセスの総数がSSHデーモン(systemd)の制限に達しました。

SSHによって開始されたプロセスの総数がSSHデーモン(systemd)の制限に達しました。

本番サーバーには、SSH経由で接続してスクリプトを実行するいくつかのユーザー起動(バックグラウンド)プロセスがあります。これらのプロセスはデーモンであり、継続的に実行されます。開始された各プロセスはsystemdのservicesにありますsshd

user@host:~> systemctl status sshd
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
   Active: active (running) since Di 2019-10-15 12:25:34 EDT; 1 day 16h ago
  Process: 48099 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS)
 Main PID: 48106 (sshd)
    Tasks: 464 (limit: 512)
   CGroup: /system.slice/sshd.service
   |-  ...
   |-  ...

ご覧のように、作業数がかなり多く、過去数日間に何度も制限に達しました。これにより、SSH経由で接続できなくなる問題が発生しました。そして、SSHを使用して新しいプロセスを開始することはできません。これらのプロセスの一部は終了することもできません。プロセスをフォークできないというbashエラーが発生し続けます。

これが正しい行動ですかsystemd

同じOSを使用するテストシステムではこれを再現することはできません。私が開始するすべてのプロセスはuser.sliceusingで見つけることができますsystemctl

予想どおり、sshdサービスが空になっているようです。

● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fr 2019-06-28 07:37:03 CEST; 3 months 19 days ago
  Process: 1925 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS)
 Main PID: 1972 (sshd)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/sshd.service
           └─1972 /usr/sbin/sshd -D

cronサービスでも同じことが起こります。 cronjobによって開始されたすべてのプロセスはcronサービスの下にリストされ、時には512という制限に達することがあります。

私の問題は、どの設定パラメータがこの動作を引き起こしているかを確認できないことです。すべてのconfファイルを比較してみました/etc/systemd/が、違いは見つかりませんでした。

また、systemdを使用するさまざまなディストリビューションがどのように機能するかを確認しました。 Debian 9、SLES12、RHEL 8. これらのどれも、最初の例に示されている本番サーバーのようには機能しません。

ベストアンサー1

おすすめ記事