起動時にすべてのサービスにulimit値を設定する必要があります。 /etc/sysconfig/limits.confに値を設定していますが、これらの値は起動時に適用されず、デフォルトで1024が必要です。
私はlimits.confに値を設定し、/ etc/pam.d/*に「必須のpam_limits.so」エントリが含まれているかどうか、さらに/etc/security/limits.d/90-nproc.confにもデフォルトがないかどうかを確認しましたエントリ。
起動時に値を含める別の方法を見つけたので、/ etc/sysconfig/initファイルに出くわしました。このファイルに値を設定すると、すべてのサービスが起動時に期待値を取得しました。
現在、サーバーへの影響と、この/ etc/sysconfig/initファイルでの構成を無視する必要があることについてはわかりません。また、このファイルまたは上記のメソッド以外の代替手段はありますか。
Ulimitは、サービスやシステム全体に固有のものではなく、個々のアカウントに固有のものです。 /etc/security/limits.conf
のソフト制限は、サービスを開始したときにデフォルトとして表示されるものである必要があります。これはあなたのケースでは起こっていないようですので、問題のサービスを実行しているユーザーのドットファイル、または問題のサービスの実際の初期化スクリプトを調べ始めます。 。 ulimitがこれら2つの場所のいずれかに設定されているため、/etc/security/limits.conf
値がオーバーライドされているように感じます。
私はあなたが話しているその方法を使用して、Apacheユーザーによって作成されたファイルにulimit
とumask
を設定しました。つまり、/etc/init.d/httpd
を編集し、そこにumask
とulimit -s
の構成を含めたので、問題が解決したので、これは良い解決策だと思います。予想以外の影響はありませんでした。
ファイル/etc/security/limits.conf
はPAMによって使用されますが、ユーザーがログインしているときにPAMが使用されます。ただし、サービスが開始されると、PAMを経由しないため、limits.conf
は役に立ちません。サービスはinitシステムによって起動され、それらの設定は使用するシステムによって異なります。 upstartを使用している場合は、システム全体で/etc/sysconfig/init
またはサービスごとに/etc/sysconfig/<servicename>
で設定できます。 systemdの世界では、ulimitsはusint Limit<type>=
によってサービスファイルに設定できますが、システム全体でそれを行う方法がわかりません。 OpenRCを使用すると、サービスごとに、またはシステム全体でrc_ulimit=
を/etc/rc.conf
に設定できます。