使用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
- 適合用於資料庫主鍵的最佳UUID工具庫 - Vlad Mihalcea資料庫UI
- 如何通過隧道將本地主機連線到公共網際網路上 - Vlad Mihalcea
- JavaWEB開發13——事務與連線池JavaWeb
- 批處理最佳實踐 - Vlad Mihalcea
- 使用Spring實現訪問主從資料庫的讀寫和只讀事務/事物的分離路由 -Vlad MihalceaSpring資料庫路由
- 使用JPA和Hibernate呼叫儲存過程的最佳方法 - Vlad Mihalcea儲存過程
- 微服務的顆粒度難題:找到合適的微服務大小微服務
- 使用DataSource-Proxy在Spring Boot中記錄SQL語句 - Vlad MihalceaSpring BootSQL
- 使用JPA和Hibernate延遲載入實體屬性的最佳方法 - Vlad Mihalcea
- 如何啟用Hibernate慢查詢日誌? -Vlad Mihalcea
- SQL 搜尋方法或鍵集分頁 - Vlad MihalceaSQL
- 【很全很新】C3P0 連線池和 DBUtils 配合事務使用總結
- JDBC驅動程式Maven依賴項大全列表 - Vlad MihalceaJDBCMaven
- 什麼是單主資料庫複製? -Vlad Mihalcea資料庫
- 第77節:Java中的事務和資料庫連線池和DBUtilesJava資料庫
- 在JPA中請優先使用sequence策略生成實體識別符號的值 - Vlad Mihalcea符號
- MySQL 中基於 XA 實現的分散式事務MySql分散式
- 【JDBC】使用OracleDataSource建立連線池用於連線OracleJDBCOracle
- 連線池
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- C# HttpClient使用和注意事項,.NET Framework連線池併發限制C#HTTPclientFramework
- JavaWeb之事務&資料庫連線池JavaWeb資料庫
- 深度剖析分散式事務之 AT 與 XA 對比分散式
- 使用合適的維度拆分來求解問題
- 2PL(兩階段鎖定)演算法如何工作 -Vlad Mihalcea演算法
- COBOL六十週年紀念:過去,現在和未來 -Vlad Mihalcea
- 4、資料庫連線池的概念及C3P0、Uruid兩種連線池的使用資料庫UI
- Tomcat 的 JDBC 連線池TomcatJDBC
- HTTP連線池HTTP
- django連線池Django
- 從一個線上問題分析binlog與內部XA事務提交過程
- [譯] Spring 的分散式事務實現 — 使用和不使用 XA — 第二部分Spring分散式
- [譯] Spring 的分散式事務實現-使用和不使用XA — 第三部分Spring分散式
- Jedis使用連線池操作redis叢集Redis
- 在 Spring Boot 中使用 HikariCP 連線池Spring Boot
- MySQL資料庫分散式事務XA的實現原理分析MySql資料庫分散式
- java jdbc深入理解(connection與threadlocal與資料庫連線池和事務實)JavaJDBCthread資料庫