我有一个 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: {}}
现在在 elastic documentatino 上四处搜索,我看到了一些设置,比如- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
Chờ đợi
所以我想知道的是.. 对于上面的 docker-compose 我应该允许哪些设置用于 java 堆大小/内存限制以及我如何更新 compose 以包含它。
我的想法是4GB 弹性2GB 用于 logstash1GB 用于 Kibana
为主机预留 1GB
跟进我们在上面评论中的讨论,假设大小正确,您现在需要做的是按照讨论的大小调整每个 Docker 容器的大小。请注意,由于您没有使用 Swarm,您实际上不需要使用 v3 格式,v2 就足够了,因此我修改了下面的 version
行。我还在 elasticsearch
容器的 environment
部分为每个容器和堆大小添加了 mem_limit
.
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: {}}
Tôi là một lập trình viên xuất sắc, rất giỏi!