elasticsearch - 使用 docker-compose 为 ELK 推荐的 RAM 比率
问题描述
我有一个 8GB RAM 的生产服务器。我希望在服务器上托管弹性、logstash 和 kibana。使用码头工人撰写。
每个容器的推荐 java 大小内存大小是多少。我该如何配置这个。
我的docker-compose
样子如下
---
version: '3'
services
kibana:
build:
context: kibana/
container_name: kibana
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
networks: ['elk']
depends_on:
- elasticsearch
restart: always
elasticsearch:
build:
context: elasticsearch/
container_name: elasticsearch
networks: ['elk']
volumes:
- ./elastic-data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
restart: always
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
environment:
- cluster.name=es-docker
- node.name=node1
- bootstrap.memory_lock=true
logstash:
build:
context: logstash/
container_name: logstash
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
networks: ['elk']
ports:
- "5044:5044"
depends_on:
- elasticsearch
restart: always
networks: {elk: {}}
现在在弹性文档上搜索,我看到了一些设置,比如
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
等
所以我想知道.. 对于上面的 docker-compose,我应该允许 java 堆大小/内存限制的哪些设置以及如何更新 compose 以包含它。
我的想法是 4GB 弹性 2GB logstash 1GB Kibana
为主机保留 1GB
解决方案
继续我们在上面评论中的讨论,假设大小是正确的,你现在需要做的是按照讨论的大小调整每个 Docker 容器的大小。请注意,由于您没有使用 Swarm,因此您实际上不需要使用 v3 格式,v2 就足够了,因此我修改了version
下面的行。我还在容器部分添加mem_limit
了每个容器和堆大小。environment
elasticsearch
version: '2.3'
services
kibana:
build:
context: kibana/
container_name: kibana
volumes:
- ./kibana/config/:/usr/share/kibana/config:ro
networks: ['elk']
depends_on:
- elasticsearch
restart: always
mem_limit: 1g
elasticsearch:
build:
context: elasticsearch/
container_name: elasticsearch
networks: ['elk']
volumes:
- ./elastic-data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
restart: always
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
environment:
- cluster.name=es-docker
- node.name=node1
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
mem_limit: 4g
logstash:
build:
context: logstash/
container_name: logstash
volumes:
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
networks: ['elk']
ports:
- "5044:5044"
depends_on:
- elasticsearch
restart: always
mem_limit: 2g
environment:
- "LS_JAVA_OPTS=-Xmx1g -Xms1g"
networks: {elk: {}}
推荐阅读
- java - 编写一个程序,生成圣诞树的图像作为输出。我不知道错误是什么
- highcharts - highcharts sankey图中的不同节点工具提示
- c# - Unity android 强制我的应用程序使用“全屏”按钮进入 16:9,而不是执行 18:9
- google-cloud-dataflow - 如何取消嵌套 Dataflow 中的嵌套 PCollection
- sonarqube - 如何将 sonarqube 构建断路器插件与 gitlab CI 集成?
- postgresql - Postgres:优化并发的同一行更新
- facebook - 如何在不中断 Facebook Graph API 调用的情况下获取数据?
- azure - Azure B2C 自定义策略授权端点给出 404
- javascript - 如何在 javascript 中发送 SOAP 请求,例如在 SoapUI 中
- php - 如何将数据从多维数组导出到 csv