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六:優化吞吐量[轉]
開發十年,就只剩下這套架構體系了! >>>