驰骋工作流引擎效率测试报告

 

 

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 有效====================

你可能感兴趣的:(驰骋工作流引擎效率测试报告)