TechNote

sudo sysctl -w vm.max_map_count=262144

요즘 elasticsearch 공부에 한창 열을 올리고 있다.
메뉴얼대로 실행해도 에러가 자꾸나는 것이였다.

문제는 실행 환경이 달라서….

메뉴얼에서 제시된 것은 실제 컴퓨터 환경이였고.

내가 쓰는 환경은 우분투 가상머신에서 실행하였던 것

이전에 회사에서 통째로 우분투를 깔아 실행할 땐 잘 되었는데

내 노트북의 가상머신에서는 안되었던 이유는 메모리 부족이였다.

$sysctl vm.max_map_count [Enter]
vm.max_map_count = 65530

이런 결과로 메모리는 부족하고 가상머신에서 도커로 일라스틱서치엔진을 돌리려고 하니 다음과 같은 메시지가 발생했다.

$docker logs -f fscrawler-elasticsearch-1[Enter]
...중간생략....
{"@timestamp":"2024-12-24T20:28:31.443Z", "log.level":"ERROR", "message":"node validation exception\n[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. For more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.16/bootstrap-checks.html]\nbootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]; for more information see [https://www.elastic.co/guide/en/elasticsearch/reference/8.16/bootstrap-checks-max-map-count.html]", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"main","log.logger":"org.elasticsearch.bootstrap.Elasticsearch","elasticsearch.node.name":"elasticsearch","elasticsearch.cluster.name":"docker-cluster"}
ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log
{"@timestamp":"2024-12-24T20:28:31.449Z", "log.level": "INFO", "message":"stopping ...", "ecs.version": "1.2.0","service.name":"ES_ECS","event.dataset":"elasticsearch.server","process.thread.name":"elasticsearch-shutdown","log.logger":"org.elasticsearch.node.Node","elasticsearch.node.name":"elasticsearch","elasticsearch.cluster.name":"docker-cluster"}
....

65530은 너무 낮으니 적어도 262144로 높여주라는 메시지를 발견했다. 잠시 명령을 찾아보니 다음과 같았다.

sudo sysctl -w vm.max_map_count=262144

이렇게 한 후 도커컴포즈를 실행

$docker compose up -d[Enter]
[+] Running 6/6
 ✔ Container fscrawler-httpd-1             Running                                                                                                                      0.0s 
 ✔ Container fscrawler-setup-1             Healthy                                                                                                                      0.5s 
 ✔ Container fscrawler-elasticsearch-1     Healthy                                                                                                                     21.9s 
 ✔ Container fscrawler-kibana-1            Healthy                                                                                                                     30.7s 
 ✔ Container fscrawler-enterprisesearch-1  Healthy                                                                                                                     41.2s 
 ✔ Container fscrawler                     Started    

Docker ps도 무사하다.

docker ps
CONTAINER ID   IMAGE                                                          COMMAND                  CREATED          STATUS                             PORTS                                                 NAMES
11b3f4477c07   dadoonet/fscrawler:2.10-SNAPSHOT                               "/__cacert_entrypoin…"   14 minutes ago   Up 8 minutes                                                                             fscrawler
83c0fadffadb   docker.elastic.co/enterprise-search/enterprise-search:8.16.1   "/bin/tini -- /usr/l…"   14 minutes ago   Up 9 minutes (healthy)             0.0.0.0:3002->3002/tcp, :::3002->3002/tcp             fscrawler-enterprisesearch-1
6c82bb7514cb   docker.elastic.co/kibana/kibana:8.16.1                         "/bin/tini -- /usr/l…"   14 minutes ago   Up 10 minutes (healthy)            0.0.0.0:5601->5601/tcp, :::5601->5601/tcp             fscrawler-kibana-1
f8779e81faa6   docker.elastic.co/elasticsearch/elasticsearch:8.16.1           "/bin/tini -- /usr/l…"   14 minutes ago   Up 10 minutes (healthy)            0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp   fscrawler-elasticsearch-1
041b1bc69f46   httpd:2.4                                                      "httpd-foreground"       14 minutes ago   Up 14 minutes (health: starting)   0.0.0.0:80->80/tcp, :::80->80/tcp                     fscrawler-httpd-1

이렇게 매번 하는 것이 귀찮으면 서버에 세팅하면 됨.

설정화일을 열고

sudo nano /etc/sysctl.conf

다음을 추가해 준다.

vm.max_map_count=262144

이 설정을 적용해 준다.

sudo sysctl -p