まず、私が理解した内容を説明します。
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_cur
inでパラメータを使用することは、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
。
projadd
projmod
以下は(作成)と(設定)の例です。
# 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.conf
Linuxファイルです。
limits.conf
PAMモジュールのユーザーセッションでシステムリソース制限を設定しますpam_limits
。 --> と関連がありますprojmod
。
sysctl.conf
sysctl
実行時にカーネルパラメータを変更するファイル。 -->これは修正に関連しています/etc/system
。
ユーザーに制限がない場合、limits.conf
デフォルト値は以下から取得されます。カーネル:init
プロセス継承済み:親プロセス(製造元で構成/usr/lib/sysctl.d/
)PAM:(カーネルと継承済みlimits.conf
置換可能)プロセス自体(PAM、カーネルおよび継承済み代替可能、「、、、getrlimit
リソース制限のインポート/設定」)。setrlimit
prlimit
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