내 응용 프로그램은 연결 스레드마다 만듭니다. 응용 프로그램이 0이 아닌 사용자 ID에서 손상되며 스레드 수가 기본값 인 1024를 초과하는 경우가 있습니다. 나는 setcap underprivilaged 사용자의 사용에 따라RLIMIT_NPROC 값을 편집하는 더 좋은 방법입니다
실행 [너무 떨어 뜨리는 매우 나쁜 생각도 securty과 타협해야] 내가 루트로
실행을 몇 가지 옵션이이 번호를 편집 할 및 제공 기능 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이면 충분합니다. 그리고 나는 무엇이 더 튼튼하고 standars 접근 방식인지 아는 더 많은 골동품입니다.
의견을 추구하고, PS
:) 사전에 감사합니다 : 하나의 프로세스 이상 1K 스레드와 함께 제공 될 경우 무슨 일이 일어날 지. ofcource 나는 32GB의 램도 가지고있다.
고마워요 @Basile, 실제로 currunt 디자인은 다음과 같습니다. 그리고 다음 rev에서 우리는 그것을 바꿀 것입니다. 하지만 그때까지 우리는 계속 실행하고 싶습니다. 예. 슈퍼 컴퓨터에서 실행되지는 않지만 자원이 충분합니다. setuid 다음 setruid 좋은 옵션입니다. 하지만 지금은 코드를 변경하는 것에 주저하여 /etc/security/limit.conf 파일을 편집했습니다. – Akaks