使用FlexyPool度量你的XA事務連線池合適大小 - Vlad Mihalcea
使用Bitronix事務管理器可以實現自己的XA事務的連線池解決方案。根據Bitronix連線池文件,我們需要使用以下設定:
- minPoolSize:初始連線池大小
- maxPoolSize:連線池可以增長到的最大大小
- maxIdleTime:連線在被銷燬之前保持空閒的最長時間
- acquisitionTimeout:連線請求在丟擲超時之前可以等待的最長時間。預設值30s對我們的QoS來說太過分了
FlexyPool附帶預設度量標準實現,構建於Dropwizard Metrics之上,並提供兩種報告機制:
企業系統必須使用中央監控工具,例如Ganglia或Graphite,並指示FlexyPool使用不同的報告機制相當容易。我們的示例將報告匯出為CSV檔案,這是您可以自定義預設指標設定的方法。
FlexyPool初始設定:
我們只需要給出足夠大的maxOverflow和retryAttempts,並讓FlexyPool平衡地找到池的大小。
minPoolSize:0 //池的初始大小為0 maxPoolSize: 1 //池的最大大小為1 acquisitionTimeout: 1 //在放棄超時異常之前,連線請求將等待1秒 maxOverflow: 9 //該池最多可以增加10個連線(初始maxPoolSize + maxOverflow) retryAttempts: 30 //如果達到10的最終maxPoolSize並且沒有可用的連線,請求將在放棄之前重試30次。 |
案例:
點選標題可進入更多圖示分析:
我們的應用程式是一個批處理器,我們將讓它處理大量資料,以便我們收集各種指標。在分析指標後,我們可以得出以下結論:
- 最大池大小應為8
- 對於此最大池大小,不會嘗試重試。
- 在池已達到其最大大小後,連線獲取時間已穩定。
- 峰值連線租約時間為50秒,導致池大小從7增加到8.降低連線時間可以減少池大小。
如果資料庫最大連線數為100,則最多可以執行12個併發應用程式。
結論
FlexyPool簡化了連線池大小調整,同時為初始假設不再支援的無法預料的情況提供故障轉移機制。
只要重試次數超過某個閾值,就可以觸發警報,這樣我們就可以儘快介入。
相關文章
- 使用 Spring Transactional 註釋的最佳方式 - Vlad MihalceaSpring
- 所有池連線均在使用,並且達到了最大池大小。
- JavaWEB開發13——事務與連線池JavaWeb
- 如何通過隧道將本地主機連線到公共網際網路上 - Vlad Mihalcea
- 適合用於資料庫主鍵的最佳UUID工具庫 - Vlad Mihalcea資料庫UI
- 批處理最佳實踐 - Vlad Mihalcea
- 使用Spring實現訪問主從資料庫的讀寫和只讀事務/事物的分離路由 -Vlad MihalceaSpring資料庫路由
- 關於XA分散式事務(weblogic中的XA概念)分散式Web
- 使用JPA和Hibernate呼叫儲存過程的最佳方法 - Vlad Mihalcea儲存過程
- XA式、非XA式Spring分散式事務的實現Spring分散式
- 微服務的顆粒度難題:找到合適的微服務大小微服務
- Proxool 連線池的配置使用
- JDBC、JDBC框架、資料庫事務、資料庫連線池JDBC框架資料庫
- 理解資料庫連線池和ThreadLocal實現的事務控制資料庫thread
- weblogic XA 事務配置問題Web
- SQL 搜尋方法或鍵集分頁 - Vlad MihalceaSQL
- proxool連線池如何使用SSL方式連線?
- 【很全很新】C3P0 連線池和 DBUtils 配合事務使用總結
- Tomcat連線池使用Tomcat
- 資料庫連線池的使用資料庫
- 第77節:Java中的事務和資料庫連線池和DBUtilesJava資料庫
- web服務中連線池用法Web
- 使用DataSource-Proxy在Spring Boot中記錄SQL語句 - Vlad MihalceaSpring BootSQL
- 使用JPA和Hibernate延遲載入實體屬性的最佳方法 - Vlad Mihalcea
- 如何啟用Hibernate慢查詢日誌? -Vlad Mihalcea
- 什麼是單主資料庫複製? -Vlad Mihalcea資料庫
- JDBC驅動程式Maven依賴項大全列表 - Vlad MihalceaJDBCMaven
- 一個支援主從,事務以及連線池功能的mysql-proxy指令碼MySql指令碼
- 連線池
- JavaWeb之事務&資料庫連線池JavaWeb資料庫
- 【JDBC】使用OracleDataSource建立連線池用於連線OracleJDBCOracle
- 求助:(javax.transaction.xa.XAException: 關閉的連線))JavaException
- MySQL 中基於 XA 實現的分散式事務MySql分散式
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- 使用合適的維度拆分來求解問題
- 在JPA中請優先使用sequence策略生成實體識別符號的值 - Vlad Mihalcea符號
- PROXOOL資料庫連線池使用資料庫
- 在JBOSS中使用mysql連線池MySql