systemd를 사용하는 Linux 배포판이있을 것입니다.
Systemd는 각 사용자에 대한 cgroup을 만들고 사용자의 모든 프로세스는 동일한 cgroup에 속합니다.
Cgroups는 최대 프로세스 수, CPU주기, RAM 사용량 등과 같은 시스템 리소스에 대한 제한을 설정하는 Linux 메커니즘입니다. 이는 syscall ulimit
을 사용 하는 것과는 다른,보다 현대적인 리소스 제한 레이어입니다 getrlimit()
.
실행하면 systemctl status user-<uid>.slice
(사용자의 cgroup을 나타냄 ) 해당 cgroup 내에서 허용되는 현재 및 최대 작업 수 (프로세스 및 스레드)를 볼 수 있습니다.
$ systemctl 상태 사용자-$ UID.slice
● user-22001.slice-UID 22001의 사용자 조각
로드 됨 :로드 됨
드롭 인 : /usr/lib/systemd/system/user-.slice.d
└─10-defaults.conf
활성화 : 월요일부터 활성화 2018-09-10 17:36:35 EEST; 1 주일 전
작업 : 17 (한계 : 10267)
메모리 : 616.7M
기본적으로 systemd가 각 사용자에게 허용하는 최대 작업 수는 "시스템 전체 최대"( sysctl kernel.threads-max
) 의 33 %입니다 . 이것은 일반적으로 ~ 10,000 개의 작업에 해당합니다. 이 한계를 변경하려면 다음을 수행하십시오.
systemd v239 이상에서 사용자 기본값은 다음에서 TasksMax = 를 통해 설정됩니다 .
/usr/lib/systemd/system/user-.slice.d/10-defaults.conf
특정 사용자에 대한 제한을 조정하려면 (/etc/systemd/system.control에 저장 될뿐만 아니라 즉시 적용됨) 다음을 실행하십시오.
systemctl [--runtime] set-property user-<uid>.slice TasksMax=<value>
여기에서 장치 설정을 재정의하는 일반적인 메커니즘 (예 :)도 systemctl edit
여기에서 사용할 수 있지만 재부팅해야합니다. 예를 들어 모든 사용자에 대한 제한을 변경 하려면을 만들 수 있습니다 /etc/systemd/system/user-.slice.d/15-limits.conf
.
systemd v238 및 이전 버전에서는 사용자 기본값이 에서 UserTasksMax = 를 통해 설정됩니다 /etc/systemd/logind.conf
. 값을 변경하려면 일반적으로 재부팅해야합니다.
이것에 대한 자세한 정보 :