Shell Limits 파라미터 설정

zuckerfrei·2023년 8월 29일
0

Linux

목록 보기
3/7

에러

성능테스트를 하면서 많은 사용자가 요청을 보내기 시작했다.
다른 WAS는 큰 무리 없이 잘 돌아가고 있었는데, 데이터 조회와 데이터 적재를 동시에 실행하는 WAS에 문제가 발생했다.

  • Jennifer 대시보드에서 WAS 기동이 아예 멈춘 것으로 표시되어 모니터링이 불가능해짐
  • WAS 서버 SSH 접속도 먹통
  • NCP Cloud Monitoring 서비스에서도 에러 발생 시점부터 메트릭 수집이 중지

처음에는 WAS 서버에 부하가 많이갔나? 딱히 CPU, 메모리 사용량이 높지 않았는데 왜 그럴까? 재기동하면 돌아올 것 같긴한데?
같은 생각을 하면서 재기동을 준비하고 있었다.


원인

그 때 PL님이 서버에 SSH 접속을 시도 할 때 timeout 에러가 발생했다는 것을 들으시고,
혹시 오픈할 수 있는 파일 설정을 수정한 적 있느냐고 여쭤보셨다.

다시 생각해보니 WAS 서버는 설정하지 않은 것 같았다.
예전에 DB 설치를 위해 DB서버는 OS 파라미터를 설정해두었지만...

그래서 열어보니.. 역시나 default 설정으로 잡혀있었다.

성능 테스트 때문에 동시에 여러 요청을 처리하다보니 오픈할 수 있는 파일 & 프로세스의 숫자가 limit에 도달한 것이 원인으로 판단되었다.

이전에 적어둔 설정 방법을 다시 찾아보고 구글링하면서 설정해두었다.
이후 성능 테스트에서는 더 많은 요청을 보내도 같은 문제가 발생하지는 않게 되었다.

앞으로는 처음에 서버 생성하면 잊지 말고, 먼저 OS 파라미터부터 설정해두어야겠다.

설정

  • 변경 전 확인
ulimit -n 
  • 설정파일 수정 -> 영구적으로 설정하는 방법
    sudo 권한 or root 계정으로 수정 가능하다.
vi /etc/security/limits.conf
  • 설정파일 맨 아래쪽에 추가
# <domain>  <type>  <item>   <value>
*      soft    nofile    65535
*      hard    nofile    65535
*      soft    nproc     16384
*      hard    nproc     16384
  • 변경된 내용 확인
ulimit -n

설명

참조1, 참조2

  • <domain> : 계정(user)을 의미하고, 모든 user에 적용하고 싶다면 *(wildcard) 를 사용
  • <type> : soft / hard limit
  • <item> : open files는 nofile, max user processes는 nproc으로 설정
  • <value> : 원하는 설정 값 입력. 단, soft 값은 0과 hard 값 사이의 값( 0 <= soft value <= hard value)으로 설정
  • type 상세
    • soft : 기본 설정
    • hard : 최대 값
  • item 상세
    • nofile : 사용자별 오픈할 수 있는 파일 개수 (리눅스에서는 모든 개체를 파일로 본다) - open files
    • nproc : 사용자별 사용할 수 있는 프로세스 최대 개수 - max user processes
    • stack 등등 그 밖에 다른 상세 설정이 존재함
profile
무설탕 음료를 좋아합니다

0개의 댓글