AM使用指南之七:Configuration参数说明(3)
来源:互联网 发布:西安丝路软件 编辑:程序博客网 时间:2024/05/21 20:49
经常听到很多开发人员抱怨ADF应用性能差,究其原因大概都与AM的Passivation(“钝化”)和Activation(“激活”)有关。
Passivation操作要向数据库表PS_TXN写入数据,Activation操作要从数据库表PS_TXN读取数据,它将直接影响应用的性能。
那么Passivation和Activation与AM的哪些配置参数有关呢?最直接相关的参数就是Referenced Pool Size。
如果并发用户数小于该值,AM不会做Passivation和Activation,因为AM池中有足够的AM实例供用户使用。
如果并发用户数大于该值,AM将会做Passivation和Activation,因为AM池中没有足够的AM实例供用户使用。
比如,Referenced Pool Size=20,并发用户数=21,当第21个用户发起请求时,因为没有AM实例可用,只好Passivation某个AM实例,待第21个用户请求完成后,再Activation该AM实例,恢复到之前的状态。
因此想要提高应用性能,就需要知道应用的最佳并发用户数和最大并发用户数,关于最佳并发用户数和最大并发用户数,请参考《性能调优概述》。
根据这两个值来设置Referenced Pool Size和其它相关参数,目的只有一个:尽量避免和减少Passivation和Activation的次数。
1. 在给ADF应用做压力测试时,如何确定最佳并发用户数?
当并发用户数小于Referenced Pool Size时,肯定不会有Passivation和Activation。
因此要让并发用户数大于Referenced Pool Size,运行24小时,然后通过EM Console监控应用Passivation和Activation的实例峰值。
如果峰值没有超过Referenced Pool Size,继续增加并发用户数(10%),直到发现峰值超过Referenced Pool Size,则最佳并发用户数就是前一个测试的并发用户数的大小。
该测试过程是一个不断寻找的过程,在这个过程中,可能要修改Referenced Pool Size以及其它相关参数,然后修改并发用户数,直到找到最佳的数值。
2. 在给ADF应用做压力测试时,如何确定最大并发用户数?
确定最佳并发用户数后,继续增加并发用户数(10%),直到到达Maximum Pool Size,说明已经接近了应用性能的极限。
继续测试,直到出现异常:无法获得AM实例,则最大并发用户数就是前一个测试的并发用户数的大小。
该测试过程也是一个不断寻找的过程,在这个过程中,可能要同时调整Referenced Pool Size和Maximum Pool Size以及其它相关参数,然后修改并发用户数,直到找到最大的数值。
3. 在给ADF应用做压力测试时,发现实际使用的数据库连接数超过了活动的AM实例,这是为什么?
一般来说,一个AM实例会使用一个数据库连接,但是在Passivation和Activation时会使用额外的数据库连接。
可以通过设置jbo.server.internal_connection属性,指向另外一个Data Source,与AM实例使用的Data Source分开。
然后再进行压力测试,观察的另一个Data Source的使用情况,这里就是额外的数据库连接。
4. 结论
(1)AM池能够支持大大超过池子大小的并发用户数。
(2)为了减少Passivation和Activation,尽可能地让Referenced Pool Size接近最佳并发用户数。
参考文献:
1. http://andrejusb.blogspot.com/2010/12/oracle-adf-bc-11g-tuning-for-immediate.html
2. http://andrejusb.blogspot.com/2010/02/optimizing-oracle-adf-application-pool.html
3. http://andrejusb.blogspot.com/2011/10/experimenting-with-adf-bc-application.html
4. http://andrejusb.blogspot.com/2011/10/adf-bc-tuning-with-do-connection.html
5. http://andrejusb.blogspot.com/2011/11/stress-testing-oracle-adf-bc.html
6. http://andrejusb.blogspot.com/2011/11/stress-testing-oracle-adf-bc_08.html
7. http://andrejusb.blogspot.com/2011/11/stress-testing-oracle-adf-bc_16.html
8. http://andrejusb.blogspot.com/2012/01/adf-performance-marathon-22-hours.html
9. http://andrejusb.blogspot.jp/2012/08/adf-bc-passivationactivation-and-sql.html
Passivation操作要向数据库表PS_TXN写入数据,Activation操作要从数据库表PS_TXN读取数据,它将直接影响应用的性能。
那么Passivation和Activation与AM的哪些配置参数有关呢?最直接相关的参数就是Referenced Pool Size。
如果并发用户数小于该值,AM不会做Passivation和Activation,因为AM池中有足够的AM实例供用户使用。
如果并发用户数大于该值,AM将会做Passivation和Activation,因为AM池中没有足够的AM实例供用户使用。
比如,Referenced Pool Size=20,并发用户数=21,当第21个用户发起请求时,因为没有AM实例可用,只好Passivation某个AM实例,待第21个用户请求完成后,再Activation该AM实例,恢复到之前的状态。
因此想要提高应用性能,就需要知道应用的最佳并发用户数和最大并发用户数,关于最佳并发用户数和最大并发用户数,请参考《性能调优概述》。
根据这两个值来设置Referenced Pool Size和其它相关参数,目的只有一个:尽量避免和减少Passivation和Activation的次数。
1. 在给ADF应用做压力测试时,如何确定最佳并发用户数?
当并发用户数小于Referenced Pool Size时,肯定不会有Passivation和Activation。
因此要让并发用户数大于Referenced Pool Size,运行24小时,然后通过EM Console监控应用Passivation和Activation的实例峰值。
如果峰值没有超过Referenced Pool Size,继续增加并发用户数(10%),直到发现峰值超过Referenced Pool Size,则最佳并发用户数就是前一个测试的并发用户数的大小。
该测试过程是一个不断寻找的过程,在这个过程中,可能要修改Referenced Pool Size以及其它相关参数,然后修改并发用户数,直到找到最佳的数值。
2. 在给ADF应用做压力测试时,如何确定最大并发用户数?
确定最佳并发用户数后,继续增加并发用户数(10%),直到到达Maximum Pool Size,说明已经接近了应用性能的极限。
继续测试,直到出现异常:无法获得AM实例,则最大并发用户数就是前一个测试的并发用户数的大小。
该测试过程也是一个不断寻找的过程,在这个过程中,可能要同时调整Referenced Pool Size和Maximum Pool Size以及其它相关参数,然后修改并发用户数,直到找到最大的数值。
3. 在给ADF应用做压力测试时,发现实际使用的数据库连接数超过了活动的AM实例,这是为什么?
一般来说,一个AM实例会使用一个数据库连接,但是在Passivation和Activation时会使用额外的数据库连接。
可以通过设置jbo.server.internal_connection属性,指向另外一个Data Source,与AM实例使用的Data Source分开。
然后再进行压力测试,观察的另一个Data Source的使用情况,这里就是额外的数据库连接。
4. 结论
(1)AM池能够支持大大超过池子大小的并发用户数。
(2)为了减少Passivation和Activation,尽可能地让Referenced Pool Size接近最佳并发用户数。
参考文献:
1. http://andrejusb.blogspot.com/2010/12/oracle-adf-bc-11g-tuning-for-immediate.html
2. http://andrejusb.blogspot.com/2010/02/optimizing-oracle-adf-application-pool.html
3. http://andrejusb.blogspot.com/2011/10/experimenting-with-adf-bc-application.html
4. http://andrejusb.blogspot.com/2011/10/adf-bc-tuning-with-do-connection.html
5. http://andrejusb.blogspot.com/2011/11/stress-testing-oracle-adf-bc.html
6. http://andrejusb.blogspot.com/2011/11/stress-testing-oracle-adf-bc_08.html
7. http://andrejusb.blogspot.com/2011/11/stress-testing-oracle-adf-bc_16.html
8. http://andrejusb.blogspot.com/2012/01/adf-performance-marathon-22-hours.html
9. http://andrejusb.blogspot.jp/2012/08/adf-bc-passivationactivation-and-sql.html
10. http://www.oracle.com/technetwork/developer-tools/jdev/index-097578.html
http://maping930883.blogspot.com/2012/07/adf159amconfiguration3.html
0 0
- AM使用指南之七:Configuration参数说明(3)
- AM使用指南之七:Configuration参数说明(1)
- AM使用指南之七:Configuration参数说明(2)
- AM使用指南之七:Configuration参数说明(4)
- Task Flow使用指南之七:SavePoints(3)
- AM使用指南之五:在AM中执行SQL语句
- AM使用指南之六:使用Shared AM提高性能
- AM使用指南之二:Nested AM与Root AM之间的Transaction关系
- fio使用指南(最全的参数说明)
- fio使用指南(最全的参数说明)
- Task Flow使用指南之七:SavePoints(1)
- Task Flow使用指南之七:SavePoints(2)
- AM使用指南之三:如何在Managed Bean中获取AM实例?
- AM使用指南之四:把AM中的方法发布为WebService
- Windows server 2003使用指南(七)
- Table 组件使用指南之七:获取选中的Rows
- 坐标转换之七参数
- AM使用指南:如何在Managed Bean中获取AM实例?
- 快速排序的简单实现
- Libgdx的使用(15)——使用Gradle构建速度慢的问题
- Drainage Ditches(网络流_EK模板)
- AM使用指南之七:Configuration参数说明(2)
- OpenERP 之 Relational Types(关联类型)
- AM使用指南之七:Configuration参数说明(3)
- 串的模式匹配算法(求子串位置的定位函数Index(S,T,pos))
- 10.获取客户端指定路径下的文件目录,并传输至服务器端--服务器端
- 开博客了
- cocos2dx 运动+旋转动画 CCSequence CCAnimation CCAnimate CCMoveTo CCCallFuncN
- 黑马程序员,黑马论坛------Scanner的小问题(大家来找茬)
- maven学习(仅供自己参考)
- AM使用指南之七:Configuration参数说明(4)
- HTTP协议的基本概念