리눅스에 설치되어 있는 MySQL을 튜닝하려 보니 MySQL의 open_files_limit 옵션값이 534,538으로 되어있지만 open_files_limit을 증가하라는 시스템의 조언(?)을 분석해보니 리눅스(우분투)의 시스템에 제한이 걸려있네요.
ulimit 설정
root@server:/# 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) 31692 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) 31692 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
ulimit -a 명령어로 확인해보니 open files 값이 1024로 되어 있습니다. MySQL에서 open_files_limit 옵션값이 534,538으로 되어 있어도 의미가 없는 것이죠.
root@server:/# ulimit -Hn 4096 root@server:/# ulimit -Sn 1024
open files는 soft open files와 hard open files 값이 나뉘는데 두 값을 모두 변경해서 넉넉하게 설정할수 있습니다. 이 값은 위와 같은 같은 명령어로 확인할수 있습니다.
ulimit 명령어로 open files 값을 늘린 경우 시스템이 재부팅 되면 다시 원상태로 돌아가기 때문에 재부팅시에도 적용될 수 있게 /etc/security/limits.conf 파일을 수정해야 합니다.
#* soft core 0 #root hard core 100000 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #ftp - chroot /ftp #@student - maxlogins 4
에디터로 /etc/security/limits.conf 파일을 열어 우분투의 경우 하단에 위와 같이 주석처리 되어 있는 값이 보이는데 혹시 문제가 될수 있으니 주석처리된 값은 그대로 두고 아래의 값을 추가합니다.
* soft nofile 1024000 * hard nofile 1024000 mysql hard nofile 1024000 mysql soft nofile 1024000