1. 程式人生 > >kafka優化–JVM引數配置優化

kafka優化–JVM引數配置優化

主要是啟動指令碼和log4j基本引數的設定和優化,這些引數藏的比較深。

1、JVM引數配置優化

如果使用的CMS GC演算法,建議JVM Heap不要太大,在4GB以內就可以。JVM太大,導致Major GC或者Full GC產生的“stop the world”時間過長,導致broker和zk之間的session超時,比如重新選舉controller節點和提升follow replica為leader replica。

JVM也不能過小,否則會導致頻繁地觸發gc操作,也影響Kafka的吞吐量。另外,需要避免CMS GC過程中的發生promotion failure和concurrent failure問題。CMSInitiatingOccupancyFraction=70可以預防concurrent failure問題,提前出發Major GC。

Kafka JVM引數可以直接修改啟動指令碼bin/kafka-server-start.sh 中的變數值。下面是一些基本引數,也可以根據實際的gc狀況和除錯GC需要增加一些相關的引數。

1 export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G -Xmn2G -XX:PermSize=64m -XX:MaxPermSize=128m  -XX:SurvivorRatio=6  -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly"

需要關注gc日誌中的YGC時間以及CMS GC裡面的CMS-initial-mark和CMS-remark兩個階段的時間,這些GC過程是“stop the world”方式完成的。

2、開啟JMX埠

主要是為了通過JMX埠監控Kafka Broker資訊。可以在bin/kafka-server-start.sh中開啟JMX埠變數。

1 export JMX_PORT=9999

3、調整log4j的日誌級別

如果叢集中topic和partition數量較大時,因為log4j的日誌級別太低,導致程序持續很長的時間在列印日誌。日誌量巨大,導致很多額外的效能開銷。特別是contoller日誌級別為trace級別,這點比較坑。

Tips 通過JMX埠設定log4j日誌級別,不用重啟broker節點

1 2 3 4 5 6 7 設定日誌級別: java -jar cmdline-jmxclient-0.10.3.jar - localhost:9999 kafka:type=kafka.Log4jController setLogLevel=kafka.controller,INFO java -jar cmdline-jmxclient-0.10.3.jar - localhost:9999 kafka:type=kafka.Log4jController setLogLevel=state.change.logger,INFO 檢查日誌級別: java -jar cmdline-jmxclient-0.10.3.jar - localhost:9999 kafka:type=kafka.Log4jController getLogLevel=kafka.controller java -jar cmdline-jmxclient-0.10.3.jar - localhost:9999 kafka:type=kafka.Log4jController getLogLevel=state.change.logger

相關推薦

kafka優化JVM引數配置優化

主要是啟動指令碼和log4j基本引數的設定和優化,這些引數藏的比較深。 1、JVM引數配置優化 如果使用的CMS GC演算法,建議JVM Heap不要太大,在4GB以內就可以。JVM太大,導致Major GC或者Full GC產生的“stop the world”

【基礎+實戰】JVM原理及優化系列之八:如何檢視JVM引數配置

1. 檢視JAVA版本資訊 2. 檢視JVM執行模式  在$JAVA_HOME/jre/bin下有client和server兩個目錄,分別代表JVM的兩種執行模式。   client執行模式,針對桌面應用,載入速度比server模式快10%,而執行速度為server模

jetty9優化,新增jvm引數配置

我jetty9中查,想看看如何優化jetty,有是有了,但沒說明在哪個檔案中寫入.後來查一看modules目錄下有jvm.mod,就使用命令 java -jar ..\jetty-distributi

Tomcat生產中優化JVM配置實例

ast ali com 配置 class upa oot pac 實例 root 1208 1 0 11月25 ? 00:15:32 /home/root/jvm/jdk1.7.0_79/bin/java -Djava.util.logging.con

Tomcat生產中優化JVM配置例項

root 1208 1 0 11月25 ? 00:15:32 /home/root/jvm/jdk1.7.0_79/bin/java -Djava.util.logging.config.file=/home/appuser/tomcat1/conf/logging.properties

hbase引數配置優化

因官方Book Performance Tuning部分章節沒有按配置項進行索引,不能達到快速查閱的效果。所以我以配置項驅動,重新整理了原文,並補充一些自己的理解,如有錯誤,歡迎指正。 配置優化 zookeeper.session.timeout 預設值:3分鐘(18

MYSQL效能優化引數配置

1、目的: 通過根據伺服器目前狀況,修改MySQL的系統引數,達到合理利用伺服器現有資源,最大合理的提高MySQL效能。 2、伺服器引數: 32G記憶體、4個CPU,每個CPU 8核。 3、MySQL目前安裝狀況。     MySQL目前安裝,用的是MySQL

JVM引數配置詳解

java -Xmx1g -Xms1g -Xmn700m -Xss228k 預設設定 -Xms為JVM啟動時申請的最小記憶體,預設為作業系統實體記憶體的1/64但小於1G,-Xmx為JVM可申請的最大記憶體,預設為實體記憶體的1/4但小於1G,預設當空餘堆記憶體小於40%時,JVM會

Redis服務端優化實踐:配置優化、主從切換、持久化

Redis是部門業務重要的核心業務元件,被廣泛應用在行情繫統、推送服務、資料中心、投顧、圈子、量化分析等平臺。在使用Redis的過程中遇到了很多問題,涉及到開發者使用API時的一些注意事項,以及如何通過優化服務端配置提高Redis的健壯性、容錯性。 本文通過案例分析的方式分享一下我們在Redis服務

JVM引數配置詳解(包含JDK1.8)

-XX:PrintHeapAtGC:列印GC前後的詳細堆疊資訊 輸出形式: 34.702: [GC {Heap before gc invocations=7:  def new generation   total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0

mapreduce JVM引數配置的問題

在mapred-site.xml中新增引數: <property>     <name>mapreduce.map.java.opts</name>     <value>1536</value> </pro

一個性能較好的jvm引數配置以及jvm的簡介

一個性能較好的web伺服器jvm引數配置: -server //伺服器模式 -Xmx2g //JVM最大允許分配的堆記憶體,按需分配 -Xms2g //JVM初始分配的堆記憶體,一般和Xmx配置成一樣以避免每次gc後JVM重新分配記憶體。 -Xmn256m //年輕代記

檢視Java JVM引數配置資訊命令

檢視Java JVM引數配置資訊命令 java -XX:+PrintCommandLineFlags jvm執行時狀態的引數,可以很快找出問題所在。現在把幾個命令記錄一下:1. jstat這個命令對於檢視Jvm的堆疊資訊很有用。能夠檢視eden,survivor,old,perm等heap的ca

karaf jvm引數配置

開啟${karaf_home}/bin/karaf 修改 JAVA_OPTS=”$DEFAULT_JAVA_OPTS” 為 JAVA_OPTS=”-Xms1024M -Xmx10

一步步優化JVM五:優化延遲或者響應時間(1)

測量垃圾回收的時間的和頻率對於改善Java堆大小配置來說是非常重要的。MinorGC的時間和頻率的測量結果可以用來改善young代的空間大小。測量最壞情況下FullGC的時間和頻率可以用來決定old代的大小,以及是否需要切換成吞吐量垃圾回收器(通過使用-XX:+UseParalleOldGC或者-XX:+U

一步步優化JVM五:優化延遲或者響應時間(3)

CMS-initial-mark表示CMS週期的開始,CMS-initial-sweep和CMS-concurrent-reset表示週期的結束。注意第一個CMS-initial-mark報告堆大小是298458K,然後注意,ParNew MinorGC報告在CMS-initial-mark和CMS-con

Tomcat 啟動JVM引數配置

Tomcat本身不能直接在計算機上執行,需要依賴於硬體基礎之上的作業系統和一個Java虛擬機器。JAVA程式啟動時JVM都會分配一個初始記憶體和最大記憶體給這個應用程式。這個初始記憶體和最大記憶體在一定程度都會影響程式的效能。比如說在應用程式用到最大記憶體的時候,JVM是

JVM引數配置

JVM的一些引數資訊 //常見配置彙總 //堆設定 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:設定年輕代大小 -XX:NewRatio=n:設定年輕代和年老代的比值.如:為3,表示年輕代與年老代比值為1:3,年輕代佔整個年輕代年老代

JVM引數配置大全

/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=3

一步步優化JVM六:優化吞吐量[轉]

開發十年,就只剩下這套架構體系了! >>>