我的應用程序創建每個連接線程。應用程序在非零用戶標識下破壞,有時線程數超過默認值1024。我想編輯這多少讓我有幾個選擇這是更好的方法來編輯RLIMIT_NPROC值
運行作爲根[非常糟糕的主意,也有securty妥協,所以放棄它]
運行下underprivilaged用戶使用setcap,給能力CAP_SYS_RESOURCE。然後我就可以添加代碼IM我的程序
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就夠了。因此,在chaning源代碼中不應該使用最後一個選項。而且我更加了解什麼是更強大和標準的方法。
尋求你的意見,並感謝你提前:)
PS:會發生什麼,如果一個單一的過程將1K多線程服務。 ofcource我有32GB的拉姆也
Thanks @Basile,其實currunt設計是這樣的,在下一個版本中,我們會改變它。但在那之前我們想保持它運行..是的沒有超級計算機上運行,但它有足夠的資源。 setuid然後setruid是偉大的選擇。但由於目前改變代碼的不情願,我編輯了/etc/security/limit.conf文件.. – Akaks