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

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

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

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

领测软件测试网

  WebLogic Server中CMP实体bean的性能调优[8]   软件测试 

     WebLogic Server 9.0中的改进

  在WebLogic Server 9.0中,对使用乐观并发的缓存bean进行的显式缓存禁用被归档,并且与只读bean一致。(比如,bean home或远程主接口可被缓存到上面调用的CachingHome或CachingLocalHome和invalidate()方法中)。此外,read-timeout-seconds参数适用于用乐观并发部署的bean。开发人员还对集群中的bean实例无效化有更多的控制。默认情况下,当在一个集群中部署具有乐观并发策略的bean,并且该集群的一个成员更新该bean时,WebLogic Server会试图使该集群的所有节点中的bean的所有副本无效。该无效化使您避免了乐观并发故障,但是会影响性能,因为它是一项资源密集型操作。可通过在weblogic-cmp-jar.xml中将cluster-invalidation-disabled设置为true来防止EJB容器使集群中的bean副本无效。

  为实体Bean选择最佳缓存大小

  既然您理解了事务间的缓存是如何工作的,下面就让我们讨论一下选择最佳缓存大小方面的重要话题。默认情况下,每个实体bean都定义有一个大小为1000的缓存。缓存大小由weblogic-ejb-jar.xml部署描述符中的max-beans-in-cache元素控制。我发现该名称有些令人误解,因为根据并发策略的不同,WebLogic Server保存无状态的实体bean实例池(采用数据库并发策略和排他性并发策略,且事务间缓存被禁止的情况下)或者(只读、乐观或排他性并发策略,且事务间缓存启用的情况下)保存具有保留字段值的bean的真正缓存,从而无需从数据库中重新加载bean的状态就可使用。后一种情况更有趣。有人可能会想,更改缓存大小只影响具有实体bean的操作的性能;缓存越大,在缓存中发现需要的特定实体bean实例的机会就越大。基本上是这样的,但是如我下面会讲到的那样,另一个重要因素会影响缓存大小的选择。

  多版本化和事务的因素

  确定实体bean缓存大小的推动因素之一(可能不太明显)是当事务使用实体bean时,它们在事务的执行期间被实际加载和“固定”在实体缓存中,即使调用者不在修改实体bean实例而仅是从中读取值。比如,想象一下,一个会话或MDB bean中的代码在一个实体bean “Person”上执行一个finder方法,然后在返回的集合上迭代。

  ...

  Collection persons = personLocalHome.findSomething();

  for (Iterator iter = persons.iterator(); iter.hasNext();) {

  PersonLocal person = (PersonLocal)iter.next();

  Long id = person.getId();

  // do something: log, send email, etc

  ...

  }

  ...

  如果findSomething()方法返回比max-beans-in-cache中规定的值更多的对象,您的应用程序将在迭代器得到N+1个对象时(N为当前实体缓存大小)获得一个令人不愉快的(并且很可能是不想要的)CacheFullException。这可能看上去很重要,因为一般大家都认为finder不应返回很大的集合。但是不要忘记默认情况下WebLogic实体缓存是多版本的,这意味着如果多个事务请求同一个实体bean实例,那么会在缓存中创建多个版本(每个事务一个);从唯一对象的角度来看这可能极大地降低了缓存容量。

延伸阅读

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

TAG: bean Bean cmp CMP server Server SERVER WebLogic Weblogic 实体

21/212>

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

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