私のアプリケーションは接続スレッドごとに作成します。ゼロ以外のユーザー ID でアプリケーションが破壊され、スレッド数がデフォルト値の 1024 を超えることがあります。この番号を編集したいので、選択肢がほとんどありません
ルートとして実行 [非常に悪い考えであり、セキュリティについても妥協する必要があるため、削除する]
特権のないユーザーの下で実行するにはsetcapを使用し、機能CAP_SYS_RESOURCEを付与します。次に、プログラムにコードを追加できます
struct rlimit rlp; /* will initilize this later with values of nprocs(maximum number of desired threads)*/
setrlimit(RLIMIT_NPROC, &rlp);
/*RLIMIT_NPROC
*The maximum number of processes (or, more precisely on Linux, threads) that can
* created for the real user ID of the
*calling process. Upon encountering this limit, fork(2) fails with the error
*EAGAIN. */
他には/etc/securitylimits.confを編集することです 。ここで、開発ユーザーのエントリを作成して、たとえば行を入れることができます
@devuser hard nproc 20000
@devuser soft nproc 10000
ここで、10k で十分です。したがって、ソース コードを変更することに少し気が進まないので、最後のオプションに進む必要があります。そして、私はより堅牢で標準的なアプローチが何であるかを知りたいと思っています。
ご意見をお待ちしております。よろしくお願いします:)
PS: 1 つのプロセスが 1,000 を超えるスレッドで処理される場合はどうなりますか。もちろん、私は32GBのRAMも持っています