es01:
env_file: .env
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
container_name: ${DOCKER_CONTAINER_ES_NAME}
restart: always
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- cluster.initial_master_nodes=es01
- bootstrap.memory_lock=true
- action.auto_create_index=+*
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
memlock:
soft: -1
hard: -1
volumes:
- ./data01:/usr/share/elasticsearch/data
ports:
- 127.0.0.1:${DOCKER_CONTAINER_ES_PORT}:9200
networks:
- ${DOCKER_NETWORK_NAME}
我从某个地方复制了这个,但是我所有的 elasticsearch 容器都阻塞了 cpu。
最佳答案
Docker Compose documentation建议设置 deploy.resources.limits
限制 CPU 和内存的使用。这是 Docker Compose 规范第 3 版的新功能,似乎特定于使用 Docker swarm。请参阅下面的使用规范版本 2 的方法,该方法并非特定于 swarm。
---
es01:
container_name: "${DOCKER_CONTAINER_ES_NAME}"
env_file: .env
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- cluster.initial_master_nodes=es01
- bootstrap.memory_lock=true
- action.auto_create_index=+*
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
image: "docker.elastic.co/elasticsearch/elasticsearch:7.6.2"
networks:
- "${DOCKER_NETWORK_NAME}"
ports:
- "127.0.0.1:${DOCKER_CONTAINER_ES_PORT}:9200"
deploy:
resources:
limits:
cpus: "0.50" # Use at most 50% of one CPU core
memory: 50M # Use at most 50 MB of RAM
restart: always
ulimits:
memlock:
hard: -1
soft: -1
nofile:
hard: 65535
soft: 65535
nproc: 65535
volumes:
- "./data01:/usr/share/elasticsearch/data"
与 version 2 of the Docker Compose spec ,您可以使用以下内容(取自文档):cpu_count: 2
cpu_percent: 50
cpus: 0.5
cpu_shares: 73
cpu_quota: 50000
cpu_period: 20ms
cpuset: 0,1
mem_limit: 1000000000
memswap_limit: 2000000000
mem_reservation: 512m
关于docker - 如何在 docker 中限制 elasticsearch cpu 和内存使用量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63821831/