sysctlを更新しましたが、可能な接続数はまだ1000未満です。

sysctlを更新しましたが、可能な接続数はまだ1000未満です。

CentOS 7.2システムでc1000kを実行していますが、次のメッセージが表示されます。

connections: 921
error: Too many open files

/etc/sysctl.confそのため、次の内容を含めるようにコンテンツを変更しました。

fs.file-max = 2097152

ただし、再起動後も同じ制限が発生します。ulimit -Sn別途印刷してくださいulimit -Hn10244096

答え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

関連情報