CCFlow5执行效率
测
试
报
告
目录
1流程运行与哪些因素有关系... 3
1.1引擎外部因素... 3
1.2引擎内部因素... 3
2影响ccflow运行效率的4大表... 3
2.1流程信息注册表WF_GenerWorkFlow.. 4
2.2流程工作人员表WF_GenerWorkerlist. 4
2.3流程实例表 NDxxRpt. 4
2.4流程轨迹表 NDxxTrack. 4
3.为提高效率采取的优化措施... 5
4.对ccflow极限测试报告... 5
4.1极限测试流程条件... 5
4.2测试环境... 5
4.3测试结果... 6
5 对ccflow5的压力测试报告... 6
5.1压力测试步骤... 6
5.2数据为100万时执行的结果... 6
6对ccflow5的并发测试报告... 7
6.1测试环境... 7
6.2极速测试结果... 7
6.3单条流程100万数据测试结果... 7
附件:安华保险测试报告... 7
1流程运行与哪些因素有关系
总述:
一条流程就类于一辆汽车,它的运行速度与它的负载(载重货物以及使用的附加功能(比如启用空调)有关系。
我们研究一下调用ccflow的API过程,如下图:
AB点之间的时间段是ccflow执行一个接口所需要的时间。A点与B点时间之外的点是开发者根据自己的业务需要执行的业务逻辑。
我们所研究的就是AB这段时间内执行的外部因素与内部因素,分析这些因素,以尽可能的提高ccflow的执行效率。
1.1引擎外部因素
[if !supportLists]1. [endif]硬件情况。
[if !supportLists]2. [endif]网络环境。
[if !supportLists]3. [endif]用户并发数。
1.2引擎内部因素
[if !supportLists]1. [endif]节点表单字段数据的大小。
[if !supportLists]2. [endif]方向条件的多少。
[if !supportLists]3. [endif]是否启用消息机制。
[if !supportLists]4. [endif]节点设置的内容。
[if !supportLists]5. [endif]配置在流程引擎上的事件多少与事件的执行效率。
[if !supportLists]6. [endif]是否有单据生成。
[if !supportLists]7. [endif]流程引擎中的4大表内的数据量、流程注册表、流程工作人员表、数据实例数据表、流程轨迹表(也叫流程日志表)。
2影响ccflow运行效率的4大表
2.1流程信息注册表WF_GenerWorkFlow
此表用途:
流程启动时,要向此表中写入一条数据,这个表用来控制流程运行的状态、运行的位置以及发起人的基础信息。
流程实例完成后,就会清除这条记录。
此表的主键与索引:
以int 类型的WorkID 做为主键。经常用到FK_Flow和 Starter 两个字段做查询,需要对它们建立索引。
2.2流程工作人员表WF_GenerWorkerlist
此表用途:
流程启动时,要向此表中写入一条数据,以标明谁是开始节点的参与人员,以后在每个节点的运动过程中,节点的每个参与人员都会有一条数据。
它是WF_GenerWorkFlow的从表,用来记录流程实例的参与者,如果一个流程实例完成了,ccflow便会清除它。
此表的主键与索引:
以int 类型的WorkID 、 string类型的FK_Emp、int类型的FK_Node三个键做为主键。经常用到FK_Node和WorkID 两个字段做查询、删除或者更新。需要对它们建立索引。
2.3流程实例表 NDxxRpt
此表用途:
一个流程有一个实例表,它默认的命名规则是以ND+
int.Prase(FlowNo)+Rpt组成的,您可以在设计流程前指定这个表名。
此表存储流程运行的信息,比如发起人、发起时间、当前节点、结束人、流程状态等,有一些字段与WF_GenerWorkFlow重复,但是流程运行完成后,此表的数据不删除。此表方便用户对它进行统计分析、查询。
此表的主键与索引:
以int类型的WorkID做为主键,经常以WFState与Rec 两个字段做查询,所以要把它们设置成索引。
2.4流程轨迹表NDxxTrack
此表用途:
一个流程有一个轨迹表,我们也称为日志表,它默认的命名规则是以ND+ int.Prase(FlowNo)+ Track组成的。
此表存储对流程执行的所有动作,比如:发送、退回、转发、移交、删除…… 它忠实地记录用户对一个流程实例操作的过程,没有删除的操作,所以此表包含的数据最多。
此表的主键与索引:
以int类型的MyPK做为主键,经常以WorkID字段做查询,所以要把它们设置成索引。
3.为提高效率采取的优化措施
[if !supportLists]1. [endif]尽可能事先计算好节点与流程设置的信息,比如:在设计时就计算好节点的方向、一个节点下面有几个节点与它连接、此节点是否绑定了单据打印、是否设置了消息订阅、是否有事件。事先计算有助于减轻在流程运行时的SQL访问。
[if !supportLists]2. [endif]流程引擎表与流程实例数据表的主键与索引尽可能用int类型,根据经常用的查询来设置索引。
[if !supportLists]3. [endif]大量采用实体缓存,避免数据库的多次交互操作。
[if !supportLists]4. [endif]对数据库的访问以参数的方式执行:
多达95%以上的sql都是用参数执行的,您可以通过监控工具捕获到它们。CCFlow运行在bp框架上,所有的实体类都放在SQLCash这个类中,所有的update,delete,insert,select操作都是采用参数执行,生成的sql放入缓存里。
4.对ccflow极限测试报告
此处的ccflow极限测试是指在最低负载、最低启用外部功能的情况下所能跑出的最大速度,也就是引擎极限功能。
4.1极限测试流程条件
1.最简单的线性流程只有三个节点:开始、中间、结束。
2、每个节点表单有最少的字段数。
3、流程模式为合并节点表单模式。
4、流程引擎表的数据量与流程实例数据量都为0。
5、测试方式是循环调用ccflow的API接口,这三个节点的应用场景为开始节点发送、处理中间点、结束流程。
可以预测的结果:开始节点消耗会大,因为它启动流程时访问的表插入的数据较多,中间点相对较小,结束点没有寻找下一个节点的任务,但是处理结束时逻辑消耗的资源较多。
4.2测试环境
软件环境:win7,services pack1. 32位, IIS7+sqlserver2008.
硬件环境: 笔记本 内存: 2.00GB CPU: 2.53 GHZ
4.3测试结果
CPU使用率在18-25之间, 物理内存在81%左右。
节点名称运行次数时长/秒每秒完成数分析
开始节点100038.865698825.73条/秒说明:一秒可以发起25.73个流程。
开始节点在启动时所做的事情比较多,消耗资源相对较大。
中间点100028.922450834.57条/秒说明:一秒可以处理34.57个中间点的工作发送。
结束点100032.863671330.43条/秒说明: 每秒处理30.43个流程结束点。结束点不向下执行发送,但是结束工作需要做的事情与向下发送消耗的资源大致相抵.
Ccflow已经为您准备好了测试代码,安装好ccflow的DEMO环境后就即可执行。
http://localhost/wf/Testing/Test3Node024.aspx
5 对ccflow5的压力测试报告
5.1压力测试步骤
为流程引擎表压入100万个待办工作、为工作者列表压入200万条数据、为一个待测试的流程实例表与流程日志表各压入100万条数据,正常情况这下,这对一个省局单位来说应该足够大。
其它:压入数据的要求必须是随即产生的。
5.2数据为100万时执行的结果
CPU使用率在18-25之间
物理内存在81%左右
节点名称运行次数时长/秒每秒完成数分析
开始节点100058.687303117.64条/秒向流程信息注册表插入数据,故导致数据比中间点变慢.
中间点100023.446841242.66条/秒解释不清楚为什么出现这样的结果。
结束点1000307.5679983.25条/秒最后要清除流程信息注册表与工作人员表,由此导致执行删除的sql变慢。
6对ccflow5的并发测试报告
6.1测试环境
软件环境:win7,services pack1. 32位, IIS7+sqlserver2008.
硬件环境: 笔记本 内存:2.00GB CPU: 2.53 GHZ
6.2极速测试结果
(正在改造程序适应测试工具,尚未完成)
6.3单条流程100万数据测试结果
(正在改造程序适应测试工具,尚未完成)
附件:安华保险测试报告
20并发数
负载测试摘要
有关测试运行的信息
负载测试名称StartWork
说明
开始时间2015-9-9 16:18:51
结束时间2015-9-9 16:21:51
预热持续时间00:00:00
持续时间00:03:00
控制器本地运行
代理数1
使用的运行设置运行设置1
整体结果
最大用户负载20
请求/秒-
失败的请求数-
缓存的请求数占总请求数的百分比-
平均响应时间(秒)-
平均内容长度(字节)-
测试/秒3.60
未通过的测试0
平均测试时间(秒)5.40
平均事务时间(秒)0
平均页面时间(秒)-
关键统计信息: 最慢的 5 个测试
名称平均测试时间(秒)
StartWork5.40
6 测试结果
名称方案测试总数失败的测试数(占总数的百分比)平均测试时间(秒)
StartWorkStartWork6480 (0)5.40
6 事务结果
名称方案测试响应时间(秒)运行时间(秒)计数
6 测试中系统的资源
计算机名处理器时间百分比(%)测试完成时的可用内存量(MB)
6 控制器和代理资源
计算机名处理器时间百分比(%)测试完成时的可用内存量(MB)
PDT-PC1.244,653
6 错误
类型子类型计数最后一条消息
50并发
负载测试摘要
有关测试运行的信息
负载测试名称StartWork
说明
开始时间2015-9-9 16:25:24
结束时间2015-9-9 16:28:24
预热持续时间00:00:00
持续时间00:03:00
控制器本地运行
代理数1
使用的运行设置运行设置1
整体结果
最大用户负载50
请求/秒-
失败的请求数-
缓存的请求数占总请求数的百分比-
平均响应时间(秒)-
平均内容长度(字节)-
测试/秒4.53
未通过的测试0
平均测试时间(秒)10.9
平均事务时间(秒)0
平均页面时间(秒)-
关键统计信息: 最慢的 5 个测试
名称平均测试时间(秒)
StartWork10.9
6 测试结果
名称方案测试总数失败的测试数(占总数的百分比)平均测试时间(秒)
StartWorkStartWork8160 (0)10.9
6 事务结果
名称方案测试响应时间(秒)运行时间(秒)计数
6 测试中系统的资源
计算机名处理器时间百分比(%)测试完成时的可用内存量(MB)
6 控制器和代理资源
计算机名处理器时间百分比(%)测试完成时的可用内存量(MB)
PDT-PC1.514,628
6 错误
类型子类型计数最后一条消息
100并发
负载测试摘要
有关测试运行的信息
负载测试名称StartWork
说明
开始时间2015-9-9 16:30:08
结束时间2015-9-9 16:33:08
预热持续时间00:00:00
持续时间00:03:00
控制器本地运行
代理数1
使用的运行设置运行设置1
整体结果
最大用户负载100
请求/秒-
失败的请求数-
缓存的请求数占总请求数的百分比-
平均响应时间(秒)-
平均内容长度(字节)-
测试/秒3.20
未通过的测试0
平均测试时间(秒)27.8
平均事务时间(秒)0
平均页面时间(秒)-
关键统计信息: 最慢的 5 个测试
名称平均测试时间(秒)
StartWork27.8
6 测试结果
名称方案测试总数失败的测试数(占总数的百分比)平均测试时间(秒)
StartWorkStartWork5760 (0)27.8
6 事务结果
名称方案测试响应时间(秒)运行时间(秒)计数
6 测试中系统的资源
计算机名处理器时间百分比(%)测试完成时的可用内存量(MB)
6 控制器和代理资源
计算机名处理器时间百分比(%)测试完成时的可用内存量(MB)
PDT-PC1.124,567
6 错误
类型子类型计数最后一条消息
==================== 对ccflow5 有效====================