kafka為什麼要在jvm層次上進行優化?
為了充分利用網路,提高吞吐量,實現高效網路通訊。kafka客戶端會將傳送給kafka伺服器的訊息先放入自身的記憶體緩衝中,多條訊息組成乙個batch,之後通過一次網路通訊傳送出去,避免了一條訊息一次網路請求。
當網路傳輸完成之後 位於kafka客戶端 也就是jvm記憶體中的batch已經是不需要了 這時候我們需要jvmgc**器**這些記憶體。
高強度高流量的訊息傳送過程會觸發jvm的多次gc**,進而影響使用者工作執行緒的執行。
因而,kafka必須要在jvm層次上採用有效的優化策略。
kafka如何進行jvm gc優化?
核心思想 池的機制
執行緒池 避免執行緒建立銷毀的開銷
資料庫連線池 避免資料庫連線建立銷毀的開銷
kafka 利用緩衝池來儲存 batch中的資料
當batch資料網路傳輸之後 該記憶體空間指向緩衝池
需要建立batch 就在緩衝池中拿乙個記憶體塊
當緩衝池沒有記憶體塊,阻塞寫入執行緒 直至有記憶體塊釋放出來
JVM物件逃逸分析 JVM記憶體
jvm的執行模式有三種 解釋模式 interpreted mode 只使用直譯器 xint 強制jvm使用解釋模式 執行一行jvm位元組碼就編譯一行為機器碼 編譯模式 compiled mode 只使用編譯器 xcomp jvm使用編譯模式 先將所有jvm位元組碼一次編譯為機器碼,然 後一次性執行所...
jvm 32位jvm與64位jvm的比較
在高效能硬體上部署程式,目前主要使用的兩種方式 1 通過64位jdk來使用大記憶體 2 使用若干個32位虛擬機器建立邏輯集群來利用硬體資源。注 由於64位jdk存在著一些問題,所以我們一般採用第二種方式。64位jdk面臨的問題 1 記憶體 導致長時間停頓 2 現階段,64位jdk的效能測試結果普遍低...
jvm系列文章之jvm 記憶體模型
1.jvm記憶體模型按照執行緒私有與否劃分為兩類,執行緒私有類記憶體 執行緒棧,程式計數器,本地方法棧 和執行緒共享記憶體 堆,方法區or元空間 兩大類 執行緒棧 當類開始執行main方法後,位元組碼執行引擎就會為當前執行緒分配一塊記憶體區域,該區域詳細又可以根據執行的方法為main方法的後續方法分...