어제 Elasticsearch 5.0이 릴리즈 되고 엘라스틱서치의 변경 된 부분을 테스트 하기 위해 엘라스틱서치를 받아 설치 해 보기로 했다. 당연 centOS에서 실행 했으며, develop mode에서는 잘 동작하는 것을 확인하였다. 당연 로컬에서는.. 원격에 있는 PC 에 설치를 하여 URL을 불러 사용 하기 때문에 elasticsearch.yml 파일의 network.host 설정에 _global_로 변경 하고 실행 하는 순간…
ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [space_home] likely too low, increase to at least [2048]
위와 같은 에러가 발생하는 것을 확인 하였다..
이리 찾아보고 저리 찾아봐도 각기 다른 설정을 해 보라고 했지만… 안되었다..
짬빱을 굴려.. 에러메시지를 잘 읽어 보니.. file open 갯수를 늘리라는 소리였다. 왜 open갯수를 전체로 늘리는 지는 잘 모르겠지만.. 원인은 알았으니.. 해결을 해야 했다.
#ulimit -a 명령어로 확인을 해보니 open files의 갯수가 1024 개 밖에 되지 않았다.
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 62462 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) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
그래서 이 부분을 늘려 주기 위해.. ulimit -n 65536으로 늘려 보았지만.. 터미널을 나가면.. 원 상태로 돌아가버려.. 한시간동안 삽질을 했다.
결과적으로는 파일에 쓰고 재부팅이 되거나, 터미널 로그아웃이 되더라도 설정이 되어 있어야 했다.
그래서 해결 방법은 아래와 같다. map의 카운트 갯수를 엘라스틱서치에서 원하는 만큼 늘려주고, security의 limit에 등록을 해 주는 것이었다. (아래 elastic은 계정명)
vi /etc/security/limits.conf
elastic hard nofile 65536 elastic soft nofile 65536 elastic hard nproc 65536 elastic soft nproc 65536 root hard nofile 65536 root soft nofile 65536 root hard nproc 65536 root soft nproc 65536