[英]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.