• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

WebLogic Server中CMP实体bean的性能调优[8]

发布: 2010-3-11 10:09 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 33次 | 进入软件测试论坛讨论

领测软件测试网

  由于有多个事务同时运行在一个容器上很正常,所以可以想象如果上面的代码被从一个会话或MDB bean中调用,其中该bean是利用一个较高的max-beans-in-free-pool参数值(默认1000)部署的,并且同时有50个客户端请求。这使得每个事务在实体缓存中只有1000/50 = 20个可用的槽,如果一个finder返回的对象超过20个,有的事务就会失败。

  在设计具有大量实体bean的操作时要时刻牢记这一点。开发人员通常使用小型数据库这一事实使情况变得更糟,并且该问题可能并不表现出来,直到代码部署到生产规模的数据库中时。作为保护措施,我建议在开发过程中不要使用默认的缓存大小,而是将其较低值(10-100),这样缓存相关的问题就能在开发早期发现并解决。

  如您所见,为实体缓存选择正确的大小非常重要,并且不只是从性能的角度来看。如果缓存过大,您的应用程序将消耗很多不必要的内存,但是如果您走到另一个极端,配置过小的缓存空间,会有收到CacheFullException的风险。那么该如何为所有的实体bean选择最佳的缓存大小呢?

  如果您没有明确为实体bean指定缓存大小,WebLogic Server将使用默认大小1000。这对于预先知道实例数不会太多的某些bean来说足够了——比如,如果一个bean表示数据库中的一个查询表,比如“country”或“state”,其中bean实例的上限是已知的。这种情况下,不指定缓存大小而让服务器使用默认值是完全可接受的,因为如果缓存没有被充分利用不会对内存造成影响。顺便指出,为不变化或不频繁变化的bean使用只读并发策略是一个不错的注意;这不但消除了不必要的数据库调用,还限制了与该bean的实体缓存中的实例具有同样PK的实例数(多版本是不是必要的),从而节省了内存,提高了性能。

  对于其中可同时访问的最大实例数未知或不能可靠地估计出来的bean,情况略微复杂些。您需要分析和估计从finder方法返回以及从一个事务内访问的最大bean数,然后乘以可同时发生的最大事务数(这通常受您应用程序入口点的最大实例数限制——会话bean和/或MDB)。这能粗略地估计出特定实体bean所需的最小缓存容量。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网