
/etc/security/limits.confが編集または変更されていない場合は、コメントのみが残ります。しかし、 'cat /proc/self/limits'は、いくつかの有効な制限があることを示しています。これらはカーネルにコンパイルされましたか?そうでない場合、システムは変更されていない環境で最初のデフォルト制限をどこで取得しますか?
[~]$ cat /proc/self/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 1024 60413 processes
Max open files 1024 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 60413 60413 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
答え1
おそらく最も投票された回答を確認する必要があります。 ServerFault SEデフォルトのulimit値はどこに設定されていますか? (Linux、セントース) 。
修正する: 推奨されるように他のサイトの情報をコピーして貼り付けます。
これらの「基本」制限は次のように適用されます。
- これLinuxカーネル存在する起動時間(
init
プロセス用)、 - 遺産、親プロセスの制限(時々
fork(2)
)、 - ポリアクリルアミド ユーザーセッションが開いたとき(カーネル/継承された値は置き換え可能)、
- これプロセスそれ自体(PAMおよびカーネル/継承された値を置き換えることができる、参照
setrlimit(2)
)
通常のユーザープロセスはハード制限を増やすことはできません。
Linuxカーネル
起動時に、Linuxはプロセスにデフォルトのinit
制限を設定し、この制限は他のすべての(子)プロセスに継承されます。この制限を表示するには:grep process /proc/1/limits
。
たとえば、カーネルのデフォルト値は最大ファイル記述子数(ulimit -n
)は1024/1024(ソフト、ハード)であり、提案されましたLinux 2.6.39では1024/4096。
基本最大プロセス数あなたは正しいです。限られたについて:
Total RAM in kB / 128
x86 アーキテクチャの場合 (少なくとも) ディストリビューションでデフォルトのカーネル値を変更する場合があるためカーネルのソースコードを確認してくださいのためkernel/fork.c
、fork_init()
。 「プロセス数」の制限を RLIMIT_NPROC と呼びます。
ポリアクリルアミド
通常、ログイン時にユーザー認証を保証するために、PAMはいくつかのモジュールで使用されます(参考資料を参照/etc/pam.d/login
)。
Debian で制限の設定を担当する PAM モジュールは、次の場所にあります/lib/security/pam_limits.so
。
ライブラリはlimits.conf
およびからその設定を読み込みますlimits.d/*.conf
。しかし、これらのファイルが空であってもpam_limits.soはハードコードされた値を使用できます。ソースコードで確認できます。
たとえば、Debianでは、ライブラリパッチ済みこれを行うと、基本的に最大プロセス数(nproc
)は無限であり、最大ファイル数( nofile
) は 1024/1024 です:
case RLIMIT_NOFILE: pl->limits[i].limit.rlim_cur = 1024; pl->limits[i].limit.rlim_max = 1024;
だから、CentOS PAMモジュールのソースコードの確認(RLIMIT_NPROCを探してください)。
ただし、多くのプロセスがPAMを通過しないことに注意してください(通常、デーモンやcronジョブなどのログインユーザーが起動していない場合)。