docker - 如何在 docker 中限制 elasticsearch cpu 和内存使用量?

标签 docker elasticsearch docker-compose

  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/

相关文章:

postgresql - 具有单独主机名/ip 的 Kubernetes Citus 设置

docker - "Add Docker support"Visual Studio Mac IDE 中缺少菜单选项

datetime - 日期字段的Elasticsearch部分匹配

docker - 将参数传递给 docker compose

python - Docker-compose 日志仅显示 "Attaching to"而没有其他内容

运行 golang http.Client 的 Docker 容器出现错误 `certificate signed by unknown authority`

linux - 添加具有较大用户 ID/UID 值的用户时 Docker 构建挂起

java - Elasticsearch 提高查询性能

c# - Elasticsearch极限得分对多重匹配查询的影响

Docker 撰写 : How to use existing image but install additional modules