`
youxinrencwx
  • 浏览: 71225 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

高并发下资源池资源申请一点思考

 
阅读更多

昨天在看Cache Client代码的时候,发现在从资源池中获取SocketIO部分代码在高并发情况下效率不高,因此考虑通过一些变通的方式来提高效率,下面说的内容仅仅是当前自己琢磨出来可以部分提高效率的方法,希望看了这篇文章的同学能够有更好的方式或者算法来提高效率。

情景:

Cache Client SocketIO资源池是一个两级的Map,具体定义为:ConcurrentMap<String, ConcurrentMap<SockIO, Integer>>。第一级MapHost作为Key,第二级MapSockIO本身作为Key,三种SockIO状态(可用,占用,废弃)作为value。之所以采用一个Pool来存储三种状态主要是考虑到在高并发下,多个池之间保持原子性的复杂。

每一次获取可用的SocketIO的操作需要经历:1.遍历Host所在的Map2.逐个比较状态。3.原子方法获取可用SocketIO。(并发问题所要求的,具体代码可以下载:http://memcache-client-forjava.googlecode.com/files/alisoft-xplatform-asf-cache-2.5.1-src.jar )。

在修改过去的版本里面,首先遍历的过程是一个固定顺序的过程(keyset),这样会导致在高并发的情况下,越来越多的资源申请命中率会下降,因为压力总是落在keyset靠前的那些SockIO上(重复比较)。需要考虑通过什么手段可以提高在高并发下的申请命中率。

思考:

1. 资源申请的越早,被释放的可能性越高,因此是否可以考虑采用更新SockIO最后申请时间来作为后续申请的初步依据。(本身复杂度带来的耗时可能会超过命中率降低带来的损耗)

2. 采用随机数的方式来确定keyset的起始游标,也就不是每次都从keyset第一位开始(可以把keyset看作一个首尾相接的数组)。

3. 在每次资源回收的时候纪录下该资源为可用(当前为每一个Host就记录一个可能可用的资源,简单化操作),作为申请的首选尝试。(尝试不成功在去遍历)。

当前实现了2,3组合,发现效果明显,在500个并发下,每个线程200次操作(一系列动作),压力测试结果如下:

Cache test consume(cache测试总共耗时)average boundle consume(每个线程总耗时),average per request(每个线程每次操作总耗时)

没有作任何改动以前的测试结果:

cache test consume: 11507741, average boundle consume: 57538, average per request :115

采用了2策略以后的测试结果:

cache test consume: 10270512, average boundle consume: 51352, average per request :102

采用了23策略以后的测试结果:

cache test consume: 9140660, average boundle consume: 45703, average per request :91

分享到:
评论

相关推荐

    高并发内存池的内存申请流程图

    高并发内存池的内存申请流程图

    YARN动态资源池配置

    在多租户企业级数据中心环境中,YARN通过动态资源池配置能够有效地隔离不同用户的资源和任务,从而确保用户数据的安全、权限控制以及资源配额的遵守。 ### 动态资源池配置知识点 1. **权限检查与用户隔离** - ...

    自定义高并发jdbc连接池

    在IT行业中,数据库连接管理是应用系统性能优化的关键部分,特别是在高并发环境下。"自定义高并发jdbc连接池"是一个专为处理大量并发请求而设计的解决方案,它允许应用程序高效地管理和复用数据库连接,从而减少...

    云计算资源池建设方案.docx

    云计算资源池建设方案 云计算资源池是云计算的部署方式,将计算、存储、网络等资源集中起来,以虚拟化技术为基础,提供弹性的、按需计费的计算服务。云计算资源池的建设需要考虑用户的需求、技术支持、安全保障和...

    云资源池安全建设方案.pdf

    云资源池安全建设方案.pdf云资源池安全建设方案.pdf云资源池安全建设方案.pdf云资源池安全建设方案.pdf云资源池安全建设方案.pdf云资源池安全建设方案.pdf云资源池安全建设方案.pdf云资源池安全建设方案.pdf

    一种资源池的实现

    在IT行业中,资源池是一种高效的资源管理策略,它允许我们预先分配一组资源并按需分配,从而优化系统性能,减少延迟,并避免频繁的资源创建与销毁。本篇内容将深入探讨资源池的概念、静态链表(StaticLinkList)在...

    云计算资源池平台设计方案.docx

    云计算资源池设计方案是云计算资源池平台设计方案的一个重要组成部分,该方案主要考虑了计算资源池的设计、存储资源池的设计和网络资源池的设计等方面。该方案的设计主要包括计算资源池的管理、存储资源池的管理和...

    云计算下的云资源池网络分析.pdf

    从上述内容中我们可以看出,在云计算环境下的云资源池网络分析是一个涉及广泛的领域,它不仅包含云计算服务模式的定义和分类,还包括云资源的合理布局和高效管理,以及云服务技术的具体实现和应用。云计算作为ICT...

    云计算环境下密码资源池系统的应用.pdf

    密码资源池系统是保障云计算环境中数据安全的一种技术,它通过整合多个加密算法和密钥管理系统,为用户提供安全的加密和密钥管理服务。密码资源池系统可以提供包括但不限于密钥生成、存储、分发、更新和销毁等功能。...

    电力云资源池基础架构的设计和实施.pdf

    3. **高性能与高可用性**:电力云资源池需支持高性能计算需求,并具备高可用性,确保业务连续性和数据可靠性。 4. **成本效益**:合理利用资源,降低运营成本,提高整体效益。 #### 四、电力云资源池基础架构设计...

    十一、并发池-并发池-并发池

    并发池并发池并发池并发池并发池并发池并发池

    企业存储资源池整合及技术选型方案.pptx

    企业存储资源池整合及技术选型方案 本文将对企业存储资源池整合及技术选型方案进行详细的解读和分析,从存储资源池的目标、架构、技术选型、难点及挑战等方面进行详细的探讨。 一、存储资源池的目标 企业存储资源...

    数据中心计算资源池规划设计方法研究.pdf

    1. **可靠性原则**:确保资源池能够稳定运行,满足高可用性和冗余性的要求,以便在任何情况下都能提供可靠的服务。 2. **可扩展性原则**:考虑到业务发展的不确定性,资源池的设计应具备良好的横向和纵向扩展能力,...

    基于云计算的资源池管理系统的研究.pdf

    在云计算的资源池管理系统的研究中,研究人员需要关注不同支撑平台下的资源池管理策略,以及如何高效、安全地为用户提供服务。同时,云计算平台的运营管理平台和资源管理接口的设计也是至关重要的,它们是资源池管理...

    Druid简单高性能MySQL连接池

    1. **高性能**:Druid通过优化的连接池算法和内置的Connection状态检测机制,保证了在高并发环境下仍能保持良好的性能。例如,其使用了双端队列进行连接的分配与回收,减少了锁的使用,提高了并发效率。 2. **健康...

    云计算资源池建设方案.pdf

    云计算资源池建设方案云计算资源池建设方案云计算资源池建设方案云计算资源池建设方案云计算资源池建设方案

    Linux + C + Epoll实现高并发服务器(线程池 + 数据库连接池)

    在Linux 系统下面用C 语言实现的高并发服务器的代码,具体用到了Epoll,线程池,数据库连接池。 具体可以看下连接http://blog.csdn.net/wuyuxing24/article/details/48758927

    面向资源弹性调度与运维自动化的云资源池设计与规划.pptx

    4. 可用性保障(Availability):通过分布式架构和冗余设计,云资源池提供了高可用性和故障恢复能力,确保业务连续性。 5. 预测性(Predictability):通过监控和分析资源使用情况,企业可以更好地预测未来的资源...

Global site tag (gtag.js) - Google Analytics