![](/img/trans.png)
[英]How to kill a docker container when it reaches set of memory usage or CPU limit
[英]how to throttle elasticsearch cpu and memory usage in docker?
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 文档建议设置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"
使用Docker Compose 规范的第 2 版,您可以使用以下内容(取自文档):
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.