企業(yè)建設(shè)網(wǎng)站的策劃流程客戶營銷
文章目錄
- es性能調(diào)優(yōu)
- 啟用g1垃圾回收器
es性能調(diào)優(yōu)
成都的es集群經(jīng)常出現(xiàn)告警,查看日志發(fā)現(xiàn)
[gc][11534155] overhead, spent [38.3s] collecting in the last [38.6s]
這是 JVM 垃圾回收過程中的一條日志,表示在最近 38.6 秒內(nèi),JVM 進行了一次 GC (Garbage Collection) 的操作,回收垃圾所占用的內(nèi)存。這條日志的含義是,在這次 GC 中,有很大一部分時間(38.3 秒)是用于處理 GC 相關(guān)的開銷(例如標記垃圾、整理內(nèi)存等),而不是實際回收垃圾。
這可能是因為堆內(nèi)存中的對象數(shù)量太多,導(dǎo)致 GC 操作變得緩慢??梢試L試通過調(diào)整 JVM 的垃圾回收策略、調(diào)整堆內(nèi)存大小等方式來優(yōu)化性能。
這里談?wù)刯vm的垃圾回收策略
- -XX:+UseSerialGC:使用串行垃圾回收器;
- -XX:+UseParallelGC:使用并行垃圾回收器;
- -XX:+UseParallelOldGC:使用并行老年代垃圾回收器;
- -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器;
- -XX:+UseG1GC:使用G1垃圾回收器;
- -XX:NewRatio:新生代和老年代的比例;
- -XX:SurvivorRatio:Eden區(qū)域和Survivor區(qū)域的比例;
- -XX:MaxHeapSize:JVM最大堆內(nèi)存大小。
一般來說,使用 G1 垃圾收集器可能比較適合 Elasticsearch。G1 是一種面向服務(wù)端應(yīng)用的低延遲、高吞吐量垃圾回收器,可以根據(jù)內(nèi)存使用情況動態(tài)地調(diào)整堆內(nèi)存的分配比例,并且不會出現(xiàn)長時間的停頓。
下面是g1垃圾回收器的常用參數(shù)
- -XX:+UseG1GC:啟用G1垃圾回收器。
- -XX:G1HeapRegionSize=n:指定每個Heap區(qū)域的大小,可以控制最小的內(nèi)存分配單元。
- -XX:MaxGCPauseMillis=n:指定期望的最大GC停頓時間(毫秒)。
- -XX:G1NewSizePercent=n:指定新生代大小相對于堆大小的百分比。
- -XX:G1MaxNewSizePercent=n:指定新生代最大大小相對于堆大小的百分比。
- -XX:G1ReservePercent=n:指定保留的空間百分比,以便在需要時可以快速分配內(nèi)存。
- -XX:InitiatingHeapOccupancyPercent=n:指定當堆被占用的比例達到指定閾值時,啟動并發(fā)標記周期。-
- -XX:G1HeapWastePercent=n:指定堆中允許浪費的最大空間百分比。
除了垃圾回收器的選擇之外,還可以調(diào)整 Elasticsearch 的垃圾回收策略參數(shù)。例如,可以調(diào)整堆內(nèi)存的大小、垃圾回收的線程數(shù)、垃圾回收的閾值等參數(shù),以達到更好的垃圾回收效果。具體的調(diào)整方法可以參考 Elasticsearch 的官方文檔,以及相關(guān)的調(diào)優(yōu)指南。
啟用g1垃圾回收器
要在 Elasticsearch 6.3.2 中啟用 G1 垃圾回收器,需要進行以下步驟(將其他垃圾回收器關(guān)掉):
編輯 Elasticsearch 的 JVM 配置文件 config/jvm.options,加入以下參數(shù):
-XX:+UseG1GC
-XX:G1ReservePercent=25
-XX:InitiatingHeapOccupancyPercent=30
-XX:MaxGCPauseMillis=200
-XX:+ParallelRefProcEnabled
-XX:-OmitStackTraceInFastThrow
其中,-XX:+UseG1GC 啟用 G1 垃圾回收器,其余參數(shù)用于優(yōu)化 G1 的性能和行為。
確認 Elasticsearch 進程的運行用戶并給予該用戶對 Elasticsearch 安裝目錄及其子目錄的讀寫權(quán)限。