在elasticsearch的config中加jvm.options文件,修改堆棧大小,默認(rèn)是2GB,直接啟動(dòng)es即可,保證之前已經(jīng)映射了配置文件。
成都創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁(yè)美工、網(wǎng)站程序員、網(wǎng)頁(yè)設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷人員及形象策劃。承接:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開(kāi)發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門(mén)戶平臺(tái)等全方位的服務(wù)。
-Xms5g-Xmx5g完整jvm.options文件如下:## 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補(bǔ)充:Docker 容器內(nèi)存限制
Docker 內(nèi)存限制docker run -d -i -t -m 256M --memory-swap 512M --name centos2.12 centos /bin/bash查看容器實(shí)例 內(nèi)存限制:限制容器內(nèi)存大?。?p>docker run -d -i -t -m 256M --memory-swap 512M --name centos centos /bin/bash-m, --memory # 內(nèi)存限制大小,單位可以為 b,k,M,g;最小為4M--memory-swap# 內(nèi)存+交換分區(qū)大小總限制--memory-reservation # 預(yù)留內(nèi)存大小;容器在宿主機(jī)最小占用內(nèi)存;--oom-kill-disable# out-of-memory 內(nèi)存溢出;限制kill容器進(jìn)程,默認(rèn)沒(méi)設(shè)置--oom-score-adj# 容器被 OOM killer 殺死的優(yōu)先級(jí),范圍是[-1000, 1000],默認(rèn)為 0--memory-swappiness# 用于設(shè)置容器的虛擬內(nèi)存控制行為。值為 0~100 之間的整數(shù)--kernel-memory核心內(nèi)存限制,最小為 4M。1、memory 設(shè)置容器內(nèi)存大?。?-memory-swap 不是交換分區(qū),而是 memory + swap 的大?。蝗萜鞯慕粨Q分區(qū) swap = memory-swap - memory2、Docker 默認(rèn)容器交換分區(qū)的大小和內(nèi)存相同memory-swap 不設(shè)置 或者設(shè)置為 0 ;容器的交換分區(qū) swap 大小就是 memory 的小大;容器的進(jìn)程使用最大內(nèi)存 = memory + swap3、memory-swap 設(shè)置當(dāng) memory-swap 設(shè)置為 -1 時(shí);容器內(nèi)存大小為 memory 設(shè)置的大??;交換分區(qū)大小為宿主機(jī) swap 大??;容器進(jìn)程能使用的最大內(nèi)存 = memory + 宿主機(jī) swap 大??;4、內(nèi)存溢出--oom-kill-disable限制 kill 容器進(jìn)程; (必須設(shè)置在 memory 之后才有限;)docker run -d -i -t -m 256M --oom-kill-disable --name Centos-1 centos /bin/bash5、核心內(nèi)存 & 用戶內(nèi)存核心內(nèi)存和用戶內(nèi)存不同的地方在于核心內(nèi)存不能被交換出。
不能交換出去的特性使得容器可以通過(guò)消耗太多內(nèi)存來(lái)堵塞一些系統(tǒng)服務(wù)。
核心內(nèi)存包括:stack pages(棧頁(yè)面)slab pagessocket memory pressuretcp memory pressure可以通過(guò)設(shè)置核心內(nèi)存限制來(lái)約束這些內(nèi)存。
每個(gè)進(jìn)程都要消耗一些棧頁(yè)面,通過(guò)限制核心內(nèi)存,可以在核心內(nèi)存使用過(guò)多時(shí)阻止新進(jìn)程被創(chuàng)建。
docker run -d -i -t -m 500M --kernel-memory 128M --name Centos-2 centos /bin/bash限制容器內(nèi)存 256M;限制核心內(nèi)存 128M 。docker run -d -i -t --kernel-memory 128M --name Centos-3 centos /bin/bash內(nèi)存為宿主機(jī)memory大小, 限制核心內(nèi)存 128M6、Swappiness 內(nèi)存回收頁(yè)容器的內(nèi)核可以交換出一定比例的匿名頁(yè)。
--memory-swappiness就是用來(lái)設(shè)置這個(gè)比例的。--memory-swappiness可以設(shè)置為從 0 到 100。# 0 表示關(guān)閉匿名頁(yè)面交換。# 100 表示所有的匿名頁(yè)都可以交換。默認(rèn)情況下,如果不適用--memory-swappiness,則該值從父進(jìn)程繼承而來(lái)。docker run -d -i -t --memory-swappiness=0 --name Centos-4 centos /bin/bash將--memory-swappiness設(shè)置為 0 可以保持容器的工作集,避免交換代理的性能損失。Swappiness 的值越大,表示越積極使用swap分區(qū),越小表示越積極使用物理內(nèi)存。默認(rèn)值swappiness=60
sysctl vm.swappiness = 100 # cat /proc/sys/vm/swappiness以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。