fengerluo 发表于 2012-7-17 17:10:31

使用关联处理一次性数据的用法

这里所指的一次性数据,是指数据只能处理一次,如进销存的单据审核,只能审核一次,再次审核就会报错了。
现有个业务是这样的:查询到未审核的单据,然后对该单据进行审核;脚本的处理主要用到关联,即关联单据的单号;脚本调试通过,但是在CONTROLLER里执行时有很多事务出错了,初步分析可能是因为使用关联时,没有使用ORD指定关联的数据,使得很多VUSER审核的是同一条数据,所以出错了。于是修改一下关联函数
        web_reg_save_param("SheetCode",
                "LB=SheetCode\":\"",
                "RB=\"",
                "NotFound=ERROR",
                "Ord={userid}",
                "Search=Body",
                LAST);
思路是使用集合点,将查询的结果,按VUSER的顺序分别赋值,避免取值冲突。经过这样改动后还是会有报错,只是成功率会高一点。问题仍未解决。

在这里请教各位,这种一次性需要处理的数据不可以使用关联的方法来处理么,只能使用参数化的方式来取值么?

云层 发表于 2012-7-17 23:20:05

可以用关联,本来这个做的没啥问题,如果你换成参数化给我的感觉是这个东西不是真实系统的负载,因为真实情况下不可能每个用户都不互相操作数据的。

fengerluo 发表于 2012-7-18 10:01:49

现在使用参数化单号的方式,这样就应该不存在可能重复审核的问题了,但是现象仍是单跑没问题,上CONTROLLER就报错,我怀疑它的程序在后台处理有问题。

marsmaya 发表于 2012-7-18 10:12:29

场景报错的提示是什么呢?

v_v 发表于 2012-7-19 23:20:24

我遇到和你一样的问题了,也在郁闷中啊。。。求大侠指教

v_v 发表于 2012-7-19 23:26:06

CONTROLLER 不设置超时事务可以全部成功,但是实际数据还是没有审核通过。 因为实际系统查询操作时,反应很慢,我就调整了下超时时间为999.这下CONTROLLER 中并发20个用户运行后报错了。500,超时。。坑啊。还是只审核了一条数据。
之前我也和你一样,采用了关联取查询列表的记录,后面又参数化了。关联的时候并发还可以一次审核3条数据成功。参数化后并发就只有一条能成功了。 没思路了。。。。哎单个运行都没问题啊。

edisonzhang 发表于 2012-7-20 16:03:59

你这个问题是这样的并发后脚本虚拟用户 可能取到相同的值
我的解决方案是如果有很多这样的数据看假设查询后有10页
你在 GO 翻页的时候关联当然多少页 去随即
然后再关联取随机值 这样话 概率会小很多的
不知是否有帮助
页: [1]
查看完整版本: 使用关联处理一次性数据的用法