시스템 전체에서 사용할 수 있는 스레드/프로세스의 최대값

시스템 전체의 최대 프로세스수(프로세스+스레드)는 threads-max 값에 의해 결정됩니다. (Linux커널에서는 스레드도 프로세스로 보입니다.)

이 값을 넘으면 프로세스가 생성되지 않으므로 필요에 따라서 충분한 값을 설정해야 합니다. 다만 threads-max의 디폴트값은 메모리사이즈에 따라서 기동시에 계산된 값이 됩니다.

$ cat /proc/sys/kernel/threads-max
15871

일단 테스트를 위해 값을 3배로 해봅니다.
변경방법은 /etc/sysctl.conf 에 아래내용을 입력합니다.

$ sudo vi /etc/sysctl.conf

# 시스템전체의 최대 프로세스수
kernel.threads-max = 47613

수정후에는 아래 명령어로 반영합니다.

$ sudo sysctl -p

다시 값을 확인해봅니다.

$ cat /proc/sys/kernel/threads-max
47613

또한 유져1명이 사용할 수 있는 최대 프로세스수가 제한되어 있습니다.

$ ulimit -u
7935

/etc/security/limits.conf 을 아래와 같이 변경하면 각 유져별로 최대 프로세스수를 설정할 수 있습니다.

$ sudo vi /etc/security/limits.conf
ec2-user soft nproc 10000
ec2-user hard nproc 15000

변경후에는 해당유져가 로그아웃후 다시 로그인했을때 반영이 됩니다.

$ ulimit -u
10000

참고사이트

http://d.hatena.ne.jp/Fiore/20080310/1205155154

This entry was posted in Linux. Bookmark the permalink.