使用Bitronix事务管理器可以实现自己的XA事务的连接池解决方案。根据Bitronix连接池文档,我们需要使用以下设置:
- minPoolSize:初始连接池大小
- maxPoolSize:连接池可以增长到的最大大小
- maxIdleTime:连接在被销毁之前保持空闲的最长时间
- acquisitionTimeout:连接请求在抛出超时之前可以等待的最长时间。默认值30s对我们的QoS来说太过分了
FlexyPool初始设置:
我们只需要给出足够大的maxOverflow和retryAttempts,并让FlexyPool平衡地找到池的大小。
minPoolSize:0 //池的初始大小为0 |
案例:
点击标题可进入更多图标分析:
我们的应用程序是一个批处理器,我们将让它处理大量数据,以便我们收集各种指标。在分析指标后,我们可以得出以下结论:
- 最大池大小应为8
- 对于此最大池大小,不会尝试重试。
- 在池已达到其最大大小后,连接获取时间已稳定。
- 峰值连接租约时间为50秒,导致池大小从7增加到8.降低连接时间可以减少池大小。
结论
FlexyPool简化了连接池大小调整,同时为初始假设不再支持的无法预料的情况提供故障转移机制。
只要重试次数超过某个阈值,就可以触发警报,这样我们就可以尽快介入。