使用docker组合的ELK的推荐RAM比率



我有一台8GB RAM的生产服务器。我希望在服务器上托管elastic、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用于日志存储1GB用于Kibana

为主机预留1GB

根据我们在上面评论中的讨论,假设大小合适,现在您需要做的是按照讨论对每个Docker容器进行大小调整。请注意,由于您没有使用Swarm,因此实际上不需要使用v3格式,v2就足够了,因此我修改了下面的version行。我还为每个容器添加了mem_limit,并在elasticsearch容器的environment部分中添加了堆大小。

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: {}}

最新更新