글 수 367
리눅스에서는 자원의 개수를 제한을 합니다.
소켓이나 장치 등은 유닉스/리눅스에서 하나의 파일로 간주됩니다.
다음은 제 시스템의 자원의 제한값을 알아본 결과입니다.
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
max nice (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) unlimited
max rt priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
max nice (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) unlimited
max rt priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
여기서 open files의 개수가 1024로 제한되어 있음을 알 수 있읍니다. 그러니까 현재 사용할 수 있는 소켓의 개수가 1024이하라는 것이죠.
이 제한을 늘릴려고 한다면 root 권한으로 sysctl fs.file-max로 확인하면 시스템에서 설정된 최대 파일 오픈 개수가 나옵니다.
$ sysctl fs.file-max
fs.file-max = 1024
fs.file-max = 1024
이를
$ sysctl -n fs.file-max=2048
로 실행하면 시스템에서 설정한 2048개까지 오픈할 수 있게 됩니다.
이는 ulimit -a로 확인해 볼 수 있습니다.
그런데 이 설정은 재부팅후에는 다시 원래의 상태로 변경됩니다.
그러므로 이 설정을 계속해서 반영하고자 한다면
/etc/sysctl.conf에
fs.file-max=2048
을 설정해 주시고,
각 사용자의 .bash_profile 에
ulimit -n 2048로 설정해 주시면 됩니다.