먼저 제가 이해한 내용을 설명하겠습니다.
Solaris 10에서는 하드 rlim_fd_max
및 소프트 제한이 시스템 수준 rlim_fd_cur
에서 /etc/system
설정됩니다 .
그리고 /etc/security/limits.conf
한도를 설정하세요 login
. 그렇죠? 따라서 사용자에게는 이 값이 무시됩니다 /etc/system
. 에 제한이 설정되어 있지 않으면 /etc/security/limits.conf
사용자는 에서 값을 얻게 됩니다 /etc/system
. 그렇죠?
그렇다면 /etc/sysctl.conf
이것은 무엇을 위한 것입니까?
sysctl.conf
내 Solaris 10에는 , 또는 가 없습니다 limits.conf
. 이 경우 재부팅 후에도 유지되는 개별 사용자에 대한 제한을 어떻게 설정합니까? 설정 외에 다른 메커니즘이 있습니까 profile
?
답변1
rlim_fd_cur
in 과 함께 매개변수를 사용하는 것은 Solaris 10 이상에서 더 이상 권장되지 않습니다 rlim_fd_max
. System V 프로세스 간 통신 대신 /etc/system
리소스 제어를 사용해야 합니다 . process.max-file-descriptor
장점은 더 이상 서버를 다시 시작할 필요가 없다는 것입니다.프로젝트다른 프로세스에는 영향을 주지 않습니다.
그런 다음 프로젝트의 하드 제한을 변경하려면 user.root
다음과 같이 권한 수준 priv(하드 제한)도 설정해야 합니다.
# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" user.root
프로젝트의 소프트 제한을 변경하려면 user.other
권한 수준도 설정해야 합니다. 예:
$ projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.other
프로젝트는 파일에서 찾을 수 있습니다 /etc/project
.
projadd
projmod
다음은 (생성) 및 (설정)의 예 입니다 .
# useradd test
# projadd -c "Test" 'user.test'
# projmod -s -K "project.max-shm-memory=(privileged,6GB,deny)" 'user.test'
# projmod -s -K "process.max-file-descriptor=(basic,1024,deny)" user.test
# cat /etc/project|grep -i test
user.test:101:Test:::process.max-file-descriptor=(basic,1024,deny);project.max-shm-memory=(privileged,6442450944,deny)
#
projadd
그리고 projmod
지속적인 가치가 있습니다. 비지속적 값의 경우 prctl
명령을 사용해야 합니다.
예:
# prctl -n project.max-shm-memory -v 8gb -r -i project default
# prctl -n project.max-shm-memory -i project default
project: 3: default
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
usage 8.49MB
privileged 8.00GB - deny -
system 16.0EB max deny -
/etc/security/limits.conf
/etc/sysctl.conf
Linux 파일입니다 .
limits.conf
PAM 모듈의 사용자 세션에서 시스템 리소스 제한을 설정합니다 pam_limits
. --> 와 관련이 있습니다 projmod
.
sysctl.conf
sysctl
런타임 중에 커널 매개변수를 수정하는 파일입니다. --> 이것은 수정과 관련이 있습니다 /etc/system
.
사용자에게 제한이 없으면 limits.conf
기본값은 다음에서 가져옵니다. 커널: init
프로세스 상속됨: 상위 프로세스(제조업체에서 구성 /usr/lib/sysctl.d/
) PAM: limits.conf
(커널 및 상속됨 대체 가능) 프로세스 자체(PAM, 커널 및 상속됨 대체 가능, " getrlimit
, setrlimit
, prlimit
- 리소스 제한 가져오기/설정").
limits.conf
그리고 변화는 sysctl.conf
지속됩니다.
개별 사용자에 대한 제한을 설정하려면 limits.conf
파일을 편집해야 합니다. 좋다:
{account} soft as size (KB)
{account} hard as size (KB)
예:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
limit.conf를 수정하면 재부팅이 필요하지 않지만 새 매개변수는 새 세션에만 적용됩니다.
실행 중인 프로세스를 수정하려면 prlimit
다음과 같이 사용해야 합니다.
prlimit --pid <pid> --<limit>=<soft>:<hard>
예:
prlimit --pid 12345 --nofile=1024:2048