이전 Linux 시스템에서는 커널 컴파일을 해야만 file descriptor limit 나 기타 사항을 설정할 수 있었으나 최근 Linux 시스템에서는 설정 파일을 변경함으로 쉽게 설정할 수 있다

 

1. 계정 별 프로세스 file descriptor(소켓 등 포함) 제한 확인 

 

각 계정 마다 하나의 프로세스가 가질 수 있는 file descriptor에 제한이 있다

이 제한에는 Soft limit Hard limit 두 가지가 있는데

Soft limit 는 새로운 프로그램이 생성되면 디폴트로 적용되는 제한 값이고 

Hard limit  Soft limit 부터 늘릴 수 있는 최대 값 이다

Hard limit  root 만 조정이 가능하지만 무한히 늘릴 수는 없다

 

ulimit 명령어는 bash 에서 사용할 수 있으며, csh 에서는 limit 명령어를 사용한다

 

Ÿ   Soft limit ( 기본값 ) 확인 

# ulimit –aS 또는 ulimit –a 

core file size          (blocks, -c) 0 

data seg size           (kbytes, -d) unlimited 

file size               (blocks, -f) unlimited 

pending signals                 (-i) 1024 

max locked memory       (kbytes, -l) 32 

max memory size         (kbytes, -m) unlimited 

open files                      (-n) 1024 

pipe size            (512 bytes, -p) 8 

POSIX message queues     (bytes, -q) 819200 

stack size              (kbytes, -s) 10240 

cpu time               (seconds, -t) unlimited 

max user processes              (-u) 69632 

virtual memory          (kbytes, -v) unlimited 

file locks                      (-x) unlimited 

 

Ÿ   Hard limit ( 최대값 ) 확인 

# ulimit –aH 

core file size          (blocks, -c) 0 

data seg size           (kbytes, -d) unlimited 

file size               (blocks, -f) unlimited 

pending signals                 (-i) 1024 

max locked memory       (kbytes, -l) 32 

max memory size         (kbytes, -m) unlimited 

open files                      (-n) 2048 

pipe size            (512 bytes, -p) 8 

POSIX message queues     (bytes, -q) 819200 

stack size              (kbytes, -s) 10240 

cpu time               (seconds, -t) unlimited 

max user processes              (-u) 69632 

virtual memory          (kbytes, -v) unlimited 

file locks                      (-x) unlimited 

 

 

2. 계정 별 프로세스 file descriptor(소켓 등 포함) 제한 확인 

 

Ÿ   임시 open files 개수 수정 

# ulimit -n 2048 

 

Ÿ   영구 open files 개수 수정 

# vim /etc/security/limits.conf 

[user id]         soft    nofile          2048 à soft limit 

[user id]         hard    nofile          2048 à hard limit 

 

 

3. 시스템 file descriptors(소켓 등 포함

 

시스템에서 허용되는 최대 file descriptor(소켓 등 포함)을 설정하는 것으로  

 

Kernel 2.2.x 를 사용하는 Linux 시스템의 경우 /proc/sys/fs/file-max  /proc/sys/fs/inode-max 도 수정해야 한다.

일반적으로 inode-max file-max 2 ~ 3배로 설정해야 한다

Kernel 2.4.x 이상 에서는 /proc/sys/fs/file-max 만 수정한다

그리고 최근 RedHat 에서는 /etc/sysctl.conf 만 수정하면 된다

 

Ÿ   /proc/sys/fs/file-max 수정 방법 

# cat /proc/sys/fs/file-max 

6815744  

 

# echo 32768 > /proc/sys/fs/file-max 

 

Ÿ   /proc/sys/fs/inode-max 수정 방법 

# cat /proc/sys/fs/inode-max 

 

# echo 131072 > /proc/sys/fs/inode-max 

 

Ÿ   /etc/sysctl.conf 수정 방법 

# sysctl -n fs.file-max 

6815744 

 

# vim /etc/sysctl.conf 

fs.file-max = 6815744 à 수정 

 

 

4. 프로세스 별로 오픈 된 파일 개수 확인 

 

lsof -p PID | wc -l 

 

 

5. 기타 

 

/usr/include/bits/typesizes.h 에있는 __FD_SETSIZE 값을 변경하지 않으면 select기반의 socket 함수들은 1024로 동작한다. 따라서 해당 값을 늘려준다

 

 

'IT > APUE' 카테고리의 다른 글

sendfile 함수  (0) 2014.05.07
시스템 구성설정 변수값 확인(getconf)  (0) 2014.02.25
open()  (0) 2014.02.25

+ Recent posts