CentOS 7.2システムでc1000kを実行していますが、次のメッセージが表示されます。
connections: 921
error: Too many open files
/etc/sysctl.conf
そのため、次の内容を含めるようにコンテンツを変更しました。
fs.file-max = 2097152
ただし、再起動後も同じ制限が発生します。ulimit -Sn
別途印刷してくださいulimit -Hn
。1024
4096
答え1
有効(ソフト)1024記述子ulimitは、非接続目的で使用される記述子を含むプロセスの総数です。明らかに、このプロセスは他の目的に約100個の記述子を使用し、接続には921個しか残りません。 lsof -p <process-id>
記述子の使用方法が表示されます。
より多くの記述子を許可するには、プロセスを開始する前にソフト制限を増やしてください。 Bashで実行すると、次のようになります。
ulimit -Sn 2048
今後のコマンドのために2048に上げます。ソフト制限を許容最大値(ハード制限、この場合は4096)に増やすには、次のようにします。
ulimit -Sn unlimited
増加した制限を 1 つのコマンドにのみ適用し、今後他のコマンドには適用しない場合は、サブシェルで制限を増やします。
(ulimit -Sn 2048 ; c1000k)
現在のハード制限である4096の記述子を超えるには、十分な権限を持つユーザーアカウントでテストを実行して、ハード制限を増やすか、ログイン時に設定される初期ハードおよびソフトulimit値を変更できます。修正する/etc/security/limits.conf
か(より良い場合)で実行して詳細については、/etc/security.d
ファイルの説明を参照limits.conf
または実行してください。man limits.conf