파일 디스크립터(File Descriptor) 및 설정(ulimit)
파일 디스크립터란?
- 시스템으로부터 할당받은 파일을 대표하는 0이 아닌 정수값
- 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스
- 흔히 유닉스 시스템에서 모든 것을 파일이라고 한다.
- 일반적인 정규파일(Reglular File)에서부터 디렉토리(Directory), 소켓(Socket), 파이프(PIPE), 블록 디바이스, 캐릭터 디바이스 등등 모든 객체는 파일로써 관리된다.
- 유닉스 시스템에서 프로세스가 이 파일들에 접근할 때 파일 디스크립터(File Descriptor)라는 개념을 이용한다.
- 파일 디스크립터는 '0'이 아닌 정수, 'Non-negative Integer' 값이다. 즉, 음수가 아닌 0과 양수인 정수값을 갖는다. (unsigned int 값이다)
- 프로세스가 실행 중에 파일을 open 하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중에 사용하지 않는 가장 작은 값을 할당해준다.
- 그다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, FD(해당 프로세스의 open file을 관리하는 구조체 배열의 index) 값을 이용해 지정 할 수 있다.
오픈 파일 수와 최대 오픈 파일 수 확인
$ cat /proc/sys/fs/file-nr
4160 0 394313
$ sysctl -n fs.file-nr
4192 0 394313
$ sysctl -a | grep file-nr
fs.file-nr = 4192 0 394313
/proc/sys/fs/file-nr
4160 0 394313
---------------------------------------------------------------
4160 : 사용 중인 File Descriptors 수
0 : 할당된 File Descriptors의 수
394313 : 최대 열린 File Descriptors의 수
리눅스 시스템에서 최대 Open File 개수 확인
$ cat /proc/sys/fs/file-max
394313
$ sysctl -n fs.file-max
394313
$ sysctl -a | grep fs.file-max
fs.file-max = 394313
ulimit 설정
열린 File Descriptors의 최대 수(nofile) 설정
최대값 : /proc/sys/fs/file-nr 수치보다 작게 설정
확인
- soft 설정 확인
ulimit -a -S | grep "open files"
$ ulimit -aS | grep "open files"
open files (-n) 65535
- hard 설정 확인
ulimit -a -H | grep "open files"
$ ulimit -aH | grep "open files"
open files (-n) 65535
적용
임시 적용
ulimit -n 65535
permanent(영구) 적용
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
최대 프로세스 수(nproc) 설정
최대값 : unlimited
확인
- soft 설정 확인
ulimit -a -S | grep "max user processes"
$ ulimit -aS | grep "max user processes"
max user processes (-u) unlimited
- hard 설정 확인
ulimit -a -H | grep "max user processes"
$ ulimit -aH | grep "max user processes"
max user processes (-u) unlimited
적용
임시 적용
ulimit -u 65535
permanent(영구) 적용
vim /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
참고URL
- lsof(list open file) 명령어 : https://scbyun.com/447
- UNIX 및 Linux 운영 체제에서 ulimit 값 설정 : https://www.ibm.com/docs/ko/cognos-analytics/11.0.0?topic=settings-set-ulimit-values-unix-linux-operating-systems
- How to set ulimit values : https://access.redhat.com/solutions/61334
'리눅스' 카테고리의 다른 글
[리눅스] consul 설치(install consul) (0) | 2023.01.26 |
---|---|
[리눅스] vault로 ssh 인증(ssh authentication) 관리 (0) | 2023.01.26 |
[리눅스] docker nettools (0) | 2023.01.25 |
[리눅스] centos에 hashicorp vault를 설치하는 방법(installing vault) (0) | 2023.01.25 |
[리눅스] SSH 인증을 위한 SSH 인증서 구성 및 설정 방법 (0) | 2023.01.25 |