Solarisの/etc/system、/etc/sysctl.conf、および/etc/security/limits.confのファイル記述子の制限

Solarisの/etc/system、/etc/sysctl.conf、および/etc/security/limits.confのファイル記述子の制限

まず、私が理解した内容を説明します。

Solaris 10では、ハードrlim_fd_maxおよびソフト制限がシステムレベルrlim_fd_cur/etc/system設定されます。

そして/etc/security/limits.conf制限を設定してくださいlogin。そうですか?したがって、ユーザーにはこの値は無視されます/etc/system。に制限が設定されていない場合、/etc/security/limits.confユーザーはから値を取得します/etc/system。そうですか?

それでは、/etc/sysctl.confこれは何のためですか?

sysctl.conf私のSolaris 10には、またはがありませんlimits.conf。この場合、再起動後も保持される個々のユーザーの制限をどのように設定しますか?設定に加えて他のメカニズムはありますかprofile

答え1

rlim_fd_curinでパラメータを使用することは、Solaris 10以降では推奨されなくなりましたrlim_fd_max。 System Vプロセス間通信の代わりに/etc/systemリソース制御を使用する必要があります。process.max-file-descriptor利点は、もはやサーバーを再起動する必要がないことです。プロジェクト他のプロセスには影響しません。

その後、プロジェクトのハード制限を変更するには、user.root次のように権限レベルのpriv(ハード制限)も設定する必要があります。

# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" user.root

プロジェクトのソフト制限を変更するには、user.other権限レベルも設定する必要があります。例:

$ projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.other

プロジェクトはファイルにあります/etc/project

projaddprojmod以下は(作成)と(設定)の例です。

# useradd test
# projadd -c "Test" 'user.test'
# projmod -s -K "project.max-shm-memory=(privileged,6GB,deny)" 'user.test'
# projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.test
# cat /etc/project|grep -i test
user.test:101:Test:::process.max-file-descriptor=(basic,1024,deny);project.max-shm-memory=(privileged,6442450944,deny)
#

projaddそしてprojmod継続的な価値があります。非永続値の場合は、prctlコマンドを使用する必要があります。

例:

# prctl -n project.max-shm-memory -v 8gb -r -i project default 
# prctl -n project.max-shm-memory -i project default 
project: 3: default 
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT 
project.max-shm-memory 
usage 8.49MB 
privileged 8.00GB - deny - 
system 16.0EB max deny - 

/etc/security/limits.conf/etc/sysctl.confLinuxファイルです。

limits.confPAMモジュールのユーザーセッションでシステムリソース制限を設定しますpam_limits。 --> と関連がありますprojmod

sysctl.confsysctl実行時にカーネルパラメータを変更するファイル。 -->これは修正に関連しています/etc/system

ユーザーに制限がない場合、limits.confデフォルト値は以下から取得されます。カーネル:initプロセス継承済み:親プロセス(製造元で構成/usr/lib/sysctl.d/)PAM:(カーネルと継承済みlimits.conf置換可能)プロセス自体(PAM、カーネルお​​よび継承済み代替可能、「、、、getrlimitリソース制限のインポート/設定」)。setrlimitprlimit

limits.confそして変化はsysctl.conf持続します。

個々のユーザーの制限を設定するには、limits.confファイルを編集する必要があります。良い:

{account} soft as size (KB)
{account} hard as size (KB)

例:

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

limit.confを変更すると再起動は不要ですが、新しいパラメータは新しいセッションにのみ適用されます。

実行中のプロセスを変更するには、prlimit次のように使用する必要があります。

prlimit --pid <pid> --<limit>=<soft>:<hard>

例:

prlimit --pid 12345 --nofile=1024:2048

関連情報