扫码阅读
手机扫码阅读
通用池化框架commons-pool2功能拓展
343 2024-04-13
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章来源:
FunTester
扫码关注公众号
摘要
本文介绍了作者在使用Apache Commons Pool2框架时对其功能的拓展应用。文中首先回顾了通用池化框架的基础实践和性能测试。然后,作者提出了一种需求:在硬件资源限制的情况下,如何保证KeyedPool中对象的存活和高频调用的能力,而不是简单地销毁和创建对象。
需求和问题
作者设置了每个KeyedPool的最小空闲对象数为0,最大空闲数为5,总数为10。遇到的问题是,高并发调用导致空闲对象占用了大量系统资源,尽管没有达到最大值。
API的使用和问题
在现有API中,没有提供设置每个KeyedPool的最大空闲时间的功能。作者需要保留每个KeyedPool最大一个空闲对象,但现有API不支持。因此,作者通过获取当前KeyedPool的空闲对象数和所有KeyedPool的状态信息,来实现这一需求。
实现思路
作者提出了三种实现思路:
- 使用定时任务,间隔最大空闲时间扫描所有KeyedPool,并销毁多余的空闲对象。
- 改造对象工厂实现方法,为每个KeyedPool的对象设置标记,并在销毁对象时检查这些标记。
- 为不同的KeyedPool设置优先级,根据优先级允许空闲对象数目的不同,以优化资源分配。
附加信息
最后,作者推荐了其他关于测试和自动化的专题资源,包括原创合集、功能测试、性能测试、Groovy语言、Java、测试社群、测试理论等。
想要了解更多内容?
文章来源:
FunTester
扫码关注公众号
FunTester的其他文章
5步法助力自动化转型
手动测试人员应该权衡测试自动化相对于手动测试的好处,并且即可开始行动。
如何列举测试点
测试人员需要能够在软件开发过程中,基于软件的需?
固定QPS压测模式探索
最新的代码请移步我的GitHub,地址:https://github.com/JunManYuanLong/FunTester,gitee地址:https://gitee.com/fanapi/tester。
Caffeine高性能本地缓存框架初探
Caffeine被称作地表最强Java本地缓存框架。
Selenium自动化的JUnit参数化实践
作为自动化测试人员,经常会遇到这样Selenium测试自动化场景:需要一次又一次地执行相同的测试用例,只是使用不同的输入和环境配置,从而使工作变得冗长且多余。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线