【发布时间】:2019-01-03 14:19:15
【问题描述】:
我有一个 8GB RAM 的生产服务器。我希望在服务器上托管弹性、logstash 和 kibana。使用 docker compose。
每个容器的推荐 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 Kibana 1GB
为主机保留 1GB
【问题讨论】:
-
如果您在 Logstash 中进行大量摄取,2GB 可能不够。 Kibana 和主机声音大约为 1GB。剩下的 4GB 用于 ES 容器(其中 2GB 必须影响到堆,以便 Lucene 获得剩余的 2GB)。这可能就足够了……或者不够……最后,这实际上取决于您的用例以及您想对堆栈做什么。不过,大小调整应该采用另一种方式,首先衡量每个组件需要多少才能支持您的用例,然后配置符合要求的主机。
-
你能解释一下我上面的评论中有什么不清楚的地方吗?如果有不清楚的地方,也许我可以添加更多细节,但这里的主要问题是没有足够的上下文信息来评估您的尺寸是否合适。
-
您的评论与我使用的尺寸一致,这真的很有帮助。然而,它并没有扩展我在 Docker 组合中的操作方式。我需要设置哪些环境选项.. .. 例如
ES_JAVA_OPTS=-Xms512m -Xmx512m。也是评论而不是问题的答案 -
我的评论无意成为答案。我的目标是寻求有关您对推荐的 Java 堆大小的问题的更多信息。现在,假设大小是正确的,你需要知道的是如何在 docker-compose 中指定它们,对吧?
标签: elasticsearch docker-compose elastic-stack production-environment