ADF中AM实例池参数介绍

 

A Application Module Pooling Summary

An application module pool is a collection application module instances of the same type.

Application Module Pool 是一个存放有同一类型的 AM 实例的集合。

This pool of application module instances is shared by multiple

browser clients whose typical "think time" between submitting web pages allows

optimizing the number of application module components to be effectively smaller

than the total number of active users working on the system. That is, twenty users

visiting the web site from their browser might be able to be serviced by 5 or 10

application module instances instead of having as many application module instances

as you have browser users.

  多客户端浏览器的典型的 "think time" 型页面内容的提交就可以共享使用池中的 AM 实例,通过优化 AM 组件的数量就可以达到实际的 AM 数量小于活动的用户数量。也就是我们可以实现 510AM 的实例来服务 20 个用户,而不是对每一个用户创建一个 AM 的实例。

 

Application module components can be used to support Fusion web application

scenarios that are completely stateless, or they can be used to support a unit of work

that spans multiple browser pages. As a performance optimization, when an instance

of an application module is returned to the pool in "managed state" mode, the pool

keeps track that the application module is referenced by that particular session. The

application module instance is still in the pool and available for use, but it would prefer

to be used by the same session that was using it last time because maintaining this

so-called "session affinity" improves performance.

AM 组件可以做为一个完全无状态 (stateless) 的组件来服务 Fusion Web Application ,或者是做为有状态 (stateful) 的组件用来支持一系列的多页面的场景。

 

AM 组件在池中的状态 (state) 有三种:

a) 无条件的可用

b) 可用,但是只能被活动的用户 Session 使用的 Session Affinity 实例

c) 不可用,因为他当前正在被使用中

 

B Type of Pools

There are two kinds of pools in use when running a typical Fusion web application, Application Module pools and database connection pools.

  当我们运行一个典型的 Fusion web application 时会产生两种不同类型池, AM 实例池和数据库连接池!

 

A)AM 实例池

运行时访问 AM 组件有两种方式:

   . 做为一个 AM 允许客户端直接访问

   . 做为一个可重用的组件聚合(或内嵌)到另一个 AM 实例中。

需要指出的是 ADF 只为 RootAM 来创建 AM 实例池,基本的 ruleADF 为每个 Controller 层使用到的 Root 级的 AM 在每一个 JVM 中创建一个实例池。

下面会详细介绍各个参数的含义。

B) 数据库连接池

数据库连接池也有两种方式:

   . 通过 JDBC URL 来使用

   . 通过 JNDI NAME

当使用 JDBC URLADF 会通过 AM 的配置文件的参数来管理数据库连接池,而使用 JNDI NAME 时会使用服务器中数据源的配置。

数据库连接池中的参数在这里不会被介绍到!

 

 

C The parameters of the AM pool

 

1) Pool Behavior Parameters

Parameter

Description

Failover Transaction State Upon Managed Release

Jbo.dofailover

"Managed State" 模式下,每次当处于pending transaction stateAM 实例被释放到池中时执行" 钝化"[eager passivation].

ADFFusion web applications 应该打开这个选项(设置为True )来允许任何其它的AM 在任何时间都可以" 激活"[activate] 它的状态。

这个选项默认为False

Row-Level Locking Behavior Upon Release

Jbo.locking.mode

使用了行级锁[row-level lock]AM 实例每次在释放到池中时强制AM 实例池不去在数据库中创建一个pending transaction state

ADFFusion web application 应该设置锁定模式为“乐观锁”去避免创建一个行级锁。

这个选项默认为False!

Disconnect Application Module Upon Release

Jbo.doconnectionpooling

强制AM 实例池在AM 实例每次释放时池中时释放掉他对应的JDBC 连接。

这个选项默认是False

Enable Application Module pooling

Jbo.ampool.doampooling

使用AM 实例池,当你发布你的应用到生产环境时,默认就会设置为True 。但是在测试的时候可以设置为False ,从而可以发现更多的问题。

这个选项默认为False!

Support Dynamic JDBC Credentials

Jbo.ampool.dynamicjdbccredentials

允许程序在新的用户Session 开始的时候通过代码来修改数据库的连接凭证(用户名/ 密码)

这个选项默认为True !但是要实现这个特性必须要额外的添加代码。

Reset Non-Transactional State Upon Unmanaged Release

Jbo.ampool.resetnontransactionalstate

强制AM 重置所有的Non-Transactional State ,比如VO 的运行时设置,JDBCPrepared Statements ,绑定变量等。这时AM 实例会做为一个未管理的或是无状态“Stateless ”的形式被放回到池中。

这个选项默认是True ,关闭这个选项会提高性能,但是这样就不会清除绑定变量的值,你的应用必须确保绑定变量的值设置是正确的,如果你无法保证的话,就有可能会出现一个用户看到另外一个用户设置的绑定变量的值。

 

2Pool Sizing Parameters

 

Pool Configuration Parameter

Description

Initial Pool Size

Jbo.ampool.initpoolsize

AM 实例池初始化时AM 实例的个数。

默认值是0 ,一个基本是思路是设置他的数值为你的系统预期的并发量的10%

这个参数的主要功能是在初始化时花费一定的CPU 时间来生成指定个AM 的实例,而不是在需要的时候再去创建AM 的实例。

Maximum Pool Size

Jbo.ampool.maxpoolsize

AM 实例池最大可以容纳的个AM 实例的个数,当超过这个值时就不会再创建任何的AM 实例了。

默认值是5000

Referenced Pool Size

Jbo.recyclethreshold

当一个用户Session 使用的AM 实例以Managed-State 模式放回到池中后再被与这个Session 相关的下一次请求取出的AM 的最大实例数

这个值总是应该小于等于最大的Size 。默认为10.

设置这个值的最大好处是可以节省切换AM 实例从这个用户的Session 到另外一个用户的Session 上面去。也可以理解为为一个用户的Session 指定了特定的AM 实例,节省了切换的时间消耗。

Maximum Instance Time to Live

Jbo.ampool.timetolive

AM 实例有池中存活的最大毫秒值,当AM 池现存的实例数大于设置的最小可用值时,这个实例就会从池中移除出去。

默认值是 3600000 毫秒,这个默认值适用与大部分程序。

 

3Pool Cleanup Parameters

 

Pool Configuration Parameter

Description

Pool Polling Interval

jbo.ampool.monitorsleepinterval

池中的资源被清除的时间间隔,以毫秒为单位。

当池中的实例始终小于设置的最大实例数时,任何一个 AM 实例都不会被清除掉

默认值是 600000 毫秒,设置的值更小时就会引起更频繁的移除操作,从而减少内存的占用量,设置更大值就会更少的去清除。

Maximum Available Size

jbo.ampool.maxavailablesize

正常情况下 AM 池中最大可用的 AM 实例个数。

当清除操作发生时,就会将清除可用的 AM 实例,直到达到低于这个水平。

默认值为 25.

Minimum Available Size

jbo.ampool.minavailablesize

正常情况下 AM 池中最小可用的 AM 实例个数。

当清除操作发生时,就会将超过这个设置的可用的实例清除掉,直到达到这个水平为止。

设置为 0 时清除操作就会清空整个 AM 实例池。

默认值为 5

Idle Instance Timeout

jbo.ampool.maxinactiveage

AM 池中达到这个毫秒值不活动的 AM 的实例将做为候选人在下一次清除操作执行时被清除掉。

默认值是 600000 毫秒。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值