본문 바로가기
Programming/Linux

[Linux] max user processes 늘리는 방법

by 배고프당 2021. 1. 21.
728x90
 
java.lang.OutOfMemoryError: unable to create new native thread
 
개발 중인 서버의 톰캣에서 위와 같이 에러가 났는데요,
리눅스에서는 OS에서의 쓰레드 제한 설정이 걸려있습니다.
몇 개로 걸려있는지 확인해보니 아래와 같습니다. 
쓰레드가 4096개 이상이 되어 더 이상  쓰레드를 생성할 수 없기 때문에 발생한 에러입니다. 
 
1)soft 
$ ulimit -a
 
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 56043
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 
 
2)hard
$ ulimit -aH
 
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 56043
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[esignon@vm-esignon-4-web logs]$ ulimit -aH
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 56043
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 4096
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) unlimited
cpu time               (seconds, -t) unlimited
max user processes              (-u) 56043
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 
처음 개발 서버를 vm으로 생성하고 난 후 건드리지 않았기 때문에 기본 설정일테니 해당 쓰레드 개수를 늘려주는 작업이 필요했습니다.
 

 
max user processes 업데이트 방법 (+ 삽질기)
1)삽질
 
  1. /etc/security/limits.conf 수정 (readonly로 읽힌다면 sudo 명령어 통해 수정)
$ cd /etc/security
$ sudo limits.conf
 
vi 편집기로 열어보면 친절하게 주석으로 어떻게 수정해야하는지 잘 알려주고 있네요ㅎㅎ
 
 
 
제가 캡쳐한 파란색 박스는 주석으로 각 항목에 대한 설명 + 적용방법이 나와있고
제일 하단에 빨간 박스는 적용한 내용입니다.
max number of processes를 수정할거기 때문에 soft, hard 방식으로 모든 유저 ( * )에 대해 65535 값을 넣어주었습니다. (추가로 open file에 대해서도 1024에서 4096으로 증가)
 
이렇게 수정 후 재부팅해서 다시 아래 명령어로 확인해보면
$ ulimit -a
 
nofile은 적용이 되었지만 max number of processes는 ? 바뀌지 않네요...
 

2)성공^^
 
★ redhat 사이트에서 확인해보니 nproc 설정(max number of processes)은 더 이상 limits.conf에서 설정 할 수 없다고 합니다!!
앞으로 max user processes는 아래 위치에서 적용해주세요.
$ cd /etc/security/limits.d
$ ll
total 4
-rw-r--r--. 1 root root 221 Jan 18 10:44 20-nproc.conf
 
(해당 파일 명은 사용자 서버에 따라 이름이 다를수있으니 ll 쳐서 본인의 설정에 맞게 바꿔주세요)
 
 
vi 편집기로 열어서 위와 같이 수정 후 재부팅하고 다시 확인하니 ulimit -a로 잘 적용된것을 확인했습니다. 
 
궁금점이 해결되셨길 바라면서 이상 끝 ㅎㅎ!
 
 
728x90

'Programming > Linux' 카테고리의 다른 글

[CentOS] Maria DB 설치 / 마리아 DB 설치  (0) 2019.04.03
[Linux] 리눅스에서 CPU 정보 확인  (0) 2019.04.03

댓글