docker怎么解决隔离性问题(docker启动ES内存溢出的解决方案)
类别:服务器 浏览量:2450
时间:2021-10-19 06:43:10 docker怎么解决隔离性问题
docker启动ES内存溢出的解决方案在elasticsearch的config中加jvm.options文件,修改堆栈大小,默认是2GB,直接启动es即可,保证之前已经映射了配置文件。
-Xms5g -Xmx5g
## JVM configuration ################################################################ ## IMPORTANT: JVM heap size ################################################################ ## ## You should always set the min and max JVM heap ## size to the same value. For example, to set ## the heap to 4 GB, set: ## ## -Xms4g ## -Xmx4g ## ## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html ## for more information ## ################################################################ # Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space -Xms5g -Xmx5g ################################################################ ## Expert settings ################################################################ ## ## All settings below this section are considered ## expert settings. Don't tamper with them unless ## you understand what you are doing ## ################################################################ ## GC configuration -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly ## optimizations # pre-touch memory pages used by the JVM during initialization -XX:+AlwaysPreTouch ## basic # force the server VM (remove on 32-bit client JVMs) -server # explicitly set the stack size (reduce to 320k on 32-bit client JVMs) -Xss1m # set to headless, just in case -Djava.awt.headless=true # ensure UTF-8 encoding by default (e.g. filenames) -Dfile.encoding=UTF-8 # use our provided JNA always versus the system one -Djna.nosys=true # use old-style file permissions on JDK9 -Djdk.io.permissionsUseCanonicalPath=true # flags to configure Netty -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 # log4j 2 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true ## heap dumps # generate a heap dump when an allocation from the Java heap fails # heap dumps are created in the working directory of the JVM -XX:+HeapDumpOnOutOfMemoryError # specify an alternative path for heap dumps # ensure the directory exists and has sufficient space #-XX:HeapDumpPath=${heap.dump.path} ## GC logging #-XX:+PrintGCDetails #-XX:+PrintGCTimeStamps #-XX:+PrintGCDateStamps #-XX:+PrintClassHistogram #-XX:+PrintTenuringDistribution #-XX:+PrintGCApplicationStoppedTime # log GC status to a file with time stamps # ensure the directory exists #-Xloggc:${loggc} # By default, the GC log file will not rotate. # By uncommenting the lines below, the GC log file # will be rotated every 128MB at most 32 times. #-XX:+UseGCLogFileRotation #-XX:NumberOfGCLogFiles=32 #-XX:GCLogFileSize=128M # Elasticsearch 5.0.0 will throw an exception on unquoted field names in JSON. # If documents were already indexed with unquoted fields in a previous version # of Elasticsearch, some operations may throw errors. # # WARNING: This option will be removed in Elasticsearch 6.0.0 and is provided # only for migration purposes. #-Delasticsearch.json.allow_unquoted_field_names=true
补充:Docker 容器内存限制
Docker 内存限制docker run -d -i -t -m 256M --memory-swap 512M --name centos2.12 centos /bin/bash
限制容器内存大小;
docker run -d -i -t -m 256M --memory-swap 512M --name centos centos /bin/bash
-m, --memory # 内存限制大小,单位可以为 b,k,M,g;最小为4M --memory-swap # 内存+交换分区大小总限制 --memory-reservation # 预留内存大小;容器在宿主机最小占用内存; --oom-kill-disable # out-of-memory 内存溢出;限制kill容器进程,默认没设置 --oom-score-adj # 容器被 OOM killer 杀死的优先级,范围是[-1000, 1000],默认为 0 --memory-swappiness # 用于设置容器的虚拟内存控制行为。值为 0~100 之间的整数 --kernel-memory 核心内存限制,最小为 4M。
1、memory 设置容器内存大小;
--memory-swap 不是交换分区,而是 memory + swap 的大小; 容器的交换分区 swap = memory-swap - memory
2、Docker 默认容器交换分区的大小和内存相同
memory-swap 不设置 或者设置为 0 ; 容器的交换分区 swap 大小就是 memory 的小大; 容器的进程使用最大内存 = memory + swap
3、memory-swap 设置
当 memory-swap 设置为 -1 时; 容器内存大小为 memory 设置的大小; 交换分区大小为宿主机 swap 大小; 容器进程能使用的最大内存 = memory + 宿主机 swap 大小;
4、内存溢出
--oom-kill-disable 限制 kill 容器进程; (必须设置在 memory 之后才有限;) docker run -d -i -t -m 256M --oom-kill-disable --name Centos-1 centos /bin/bash
5、核心内存 & 用户内存
核心内存和用户内存不同的地方在于核心内存不能被交换出。
不能交换出去的特性使得容器可以通过消耗太多内存来堵塞一些系统服务。
核心内存包括: stack pages(栈页面) slab pages socket memory pressure tcp memory pressure
可以通过设置核心内存限制来约束这些内存。
每个进程都要消耗一些栈页面,通过限制核心内存,可以在核心内存使用过多时阻止新进程被创建。
docker run -d -i -t -m 500M --kernel-memory 128M --name Centos-2 centos /bin/bash 限制容器内存 256M;限制核心内存 128M 。 docker run -d -i -t --kernel-memory 128M --name Centos-3 centos /bin/bash 内存为宿主机memory大小, 限制核心内存 128M
6、Swappiness 内存回收页
容器的内核可以交换出一定比例的匿名页。
--memory-swappiness就是用来设置这个比例的。 --memory-swappiness可以设置为从 0 到 100。 # 0 表示关闭匿名页面交换。 # 100 表示所有的匿名页都可以交换。默认情况下,如果不适用--memory-swappiness,则该值从父进程继承而来。 docker run -d -i -t --memory-swappiness=0 --name Centos-4 centos /bin/bash 将--memory-swappiness设置为 0 可以保持容器的工作集,避免交换代理的性能损失。
Swappiness 的值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60
sysctl vm.swappiness = 100 # cat /proc/sys/vm/swappiness
以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。
您可能感兴趣
- docker管理工具选择(Docker可视化管理工具DockerUI的使用)
- docker查看某个容器状态(docker 移除掉运行不正常的container操作)
- docker容器网络设置(对docker中的overlay式网络详解)
- docker容器内查看内存占用(docker 查看进程, 内存, cup消耗的情况)
- docker启动k8s(k3d入门指南之在Docker中运行K3s的详细教程)
- docker 容器运行的数据在哪里(docker容器的几种存储详解)
- 运行docker时提示端口已被占用(docker 突然不能被外网访问的解决方案)
- navicat连接mysql1045解决方法(Navicat 连接服务器端中的docker数据库的方法)
- 查看docker日志大小(docker logs-查看docker容器日志的实现)
- docker主机路径与容器路径(Docker容器没有权限写入宿主机目录的解决方案)
- docker compose的常用命令(安装docker和docker-compose实例详解)
- docker如何搭建gitlab(docker+gitlab+gitlab-runner部署详解)
- docker配置和启动(Docker的安装与配置命令代码实例)
- docker容器与宿主机通信(docker容器与宿主机的数据交互方式总结)
- dockervolume文件权限(docker volumes 文件映射方式)
- docker常用命令详解(docker常用命令总结推荐)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
热门推荐
- kettle替换sql语句(sql server定时作业调用Kettle job出错的快速解决方法)
- sparksql的string转日期格式(将string类型的数据类型转换为spark rdd时报错的解决方法)
- mac版本php环境搭建(在Mac OS X中配置Apache+PHP+MySQL运行环境的详细步骤)
- js 定时切换图片(JavaScript定时器实现无缝滚动图片)
- dedecms使用教程(让dedecms实现shtml包含的实现方法)
- css3网格布局图(详解CSS3 弹性布局快速入门)
- sqlserver分区查询语句(SQL Server中的集合运算: UNION, EXCEPT和INTERSECT示例代码详解)
- 怎么写css效果最好(提高CSS代码效率的编写技巧)
- 云服务器怎么上传16g文件(云服务器怎么上传下载文件?)
- linux怎么搭建nfs(通过案例深入解析linux NFS机制)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9