51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 13842|回复: 53
打印 上一主题 下一主题

[原创] 随着并发用户的增加,事务失败的数量也增加,但事务响应时间影响不大

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-5-8 11:29:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
随着并发用户的增加,事务失败的数量也增加,但事务响应时间影响不大。这是什么原因呢?请帮忙分析一下啊!而且我测试并发用户时总是出现这样的现象,300个并发用户可以通过298个,400个并发用户可以大概通过398个,500个并发用户可以通过495个,500个并发用户可以通过493个,600个并发用户可以通过592个……既然600个并发用户可以通过592个,可是我只设置300个时却也不能完全通过,这是怎么回事啊?我该判定最大并发用户数为多少才合适呢?期盼各位帮忙指导,万分感谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

54#
发表于 2011-5-11 15:52:40 | 只看该作者
1、从100到600并发增加,但是响应时间却没有下降,是否说明在100之前系统的处理能力已经达到极限了呢?建议从10到100,10个加一次,步进式测试,观察tps和throughout曲线走势,加压到响应时间不动,吞吐量曲线趋于直线的那个点应该就是并发数极限了。
2、加了检查点失败的反而变多,是否说明没有加检查点的时候运行的成功基本都是假的呢?建议http模式测试多使用这种模式写脚本,可能效果更加可信一些:
  1. lr_start_transaction("05 查询加人处理任务");

  2. web_reg_find("Text=待获取",
  3. "Fail=NotFound",
  4. "SaveCount=QueryTask",
  5. "Search=Body",
  6. LAST);

  7. web_reg_save_param("workTaskid",
  8. "LB=getWorkTask('",
  9. "RB=','",
  10. "Ord=1",
  11. "NotFound=ERROR",
  12. LAST);

  13. web_submit_data("searchQueueTask.do",
  14. "Action=http://XXXXX.com.cn:43026/XXXX/searchQueueTask.do",
  15. "Method=POST",
  16. "RecContentType=text/html",
  17. "Referer=http://XXXXX.com.cn:43026/XXXX/searchQueueTask.do",
  18. "Snapshot=t21.inf",
  19. "Mode=HTML",
  20. ITEMDATA,
  21. "Name=workTableConditionDTO.currentRole", "Value=pos_processing", ENDITEM,
  22. "Name=workTableConditionDTO.branchCode", "Value=G12", ENDITEM,
  23. "Name=workTableConditionDTO.startApplySeq", "Value=PA{applySeqNo}", ENDITEM,
  24. "Name=workTableConditionDTO.endApplySeq", "Value=PA{applySeqNo}", ENDITEM,
  25. "Name=workTableConditionDTO.policyNo", "Value={policyNo}", ENDITEM,
  26. "Name=workTableConditionDTO.applicantName", "Value={appName}", ENDITEM,
  27. "Name=workTableConditionDTO.taskPriorityTypeCode", "Value=", ENDITEM,
  28. "Name=workTableConditionDTO.startApplyDate", "Value=20081213", ENDITEM,
  29. "Name=workTableConditionDTO.endApplyDate", "Value={appReadyDate}", ENDITEM,
  30. "Name=workTableConditionDTO.barCode", "Value={barCode}", ENDITEM,
  31. "Name=workTableConditionDTO.difficultyTypeCode", "Value=", ENDITEM,
  32. LAST);

  33. if (atoi(lr_eval_string("{QueryTask}"))<=0)
  34. {
  35. lr_error_message("*=*=*=*=*=*=*=*=*=*=*=*=*=*查询加人处理任务 失败!*=*=*=*=*=*=*=*=*=*=*=*=*=*");
  36. lr_end_transaction("05 查询加人处理任务", LR_FAIL);
  37. }
  38. else
  39. {
  40. lr_end_transaction("05 查询加人处理任务", LR_PASS);
  41. lr_output_message("*=*=*=*=*=*=*=*=*=*=*=*=*=*查询加人处理任务 成功!*=*=*=*=*=*=*=*=*=*=*=*=*=*");
  42. lr_output_message("*=*=*=*=*=*=*=*=*=*=*=*=*=*查询到的任务ID workTaskid 为:%s", lr_eval_string("{workTaskid}"));
  43. }
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

53#
发表于 2011-5-11 15:11:28 | 只看该作者
可以试试下边的方法:
在负载生成器的注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有如下两个键值:
TcpTimedWaitDelay
MaxUserPort
1,这里的TcpTimedWaitDelay默认值应该中是30s,所以这里,把这个值调小为5s(按需要调整)。
回复 支持 反对

使用道具 举报

该用户从未签到

52#
 楼主| 发表于 2008-5-28 09:17:41 | 只看该作者
这个问题得到了很多朋友的支持和帮忙,我非常感谢大家。虽然目前问题还没有完全解决,但从大家的解答中我得到了不少新的知识和看法,真的很感谢各位朋友!
回复 支持 反对

使用道具 举报

该用户从未签到

51#
 楼主| 发表于 2008-5-28 09:13:03 | 只看该作者
原帖由 blue_flower 于 2008-5-22 14:26 发表
出错信息,如附件图所示。
特别是第一个错误,以前都没见过的,不知道是什么

我知道第一个是权限问题了(也是网上朋友帮忙的,谢谢)
回复 支持 反对

使用道具 举报

该用户从未签到

50#
 楼主| 发表于 2008-5-28 09:10:49 | 只看该作者
随着并发用户的增加,事务成功率不高,但响应时间没有很大响应,经过分析,认为应该是数据库的SQL语句引起的
回复 支持 反对

使用道具 举报

该用户从未签到

49#
 楼主| 发表于 2008-5-22 14:26:53 | 只看该作者

出错信息

出错信息,如附件图所示。
特别是第一个错误,以前都没见过的,不知道是什么

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

48#
 楼主| 发表于 2008-5-22 12:41:33 | 只看该作者
哦,内存很少用光了的。倒是经常有Error: Failed to connect to server "192.168.1.111:8899": [10060] Connection refused这类错误出现.
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:07
  • 签到天数: 3654 天

    连续签到: 106 天

    [LV.Master]测试大本营

    47#
    发表于 2008-5-22 11:25:33 | 只看该作者
    看系统进程啊,其实只要内存没有用光,启动再多的用户问题都不大。
    更多的瓶颈反而在网络上。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    46#
     楼主| 发表于 2008-5-21 17:22:10 | 只看该作者

    回复 43# 的帖子

    参数化迭代那里,我通过扩展日志来看,在回放时很正常.不过在场景中运行时它就好象总是同一个用户了,相同的用户名,很奇怪,不过用户ID是不同的.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    45#
     楼主| 发表于 2008-5-21 17:19:00 | 只看该作者
    负载产生机的可用内存基本上都还有13%左右,应该不算过载吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    44#
    发表于 2008-5-21 17:08:09 | 只看该作者
    1G用户能支持多少用户不好说,你自己试一下。只要负载产生机不过载就行了,否则测出来的误差太大。一个虚拟用户占多数内存,归根到底取决于你业务的复杂程度和对内存的使用(after all, 虚拟用户就是一个线程/进程)。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    43#
    发表于 2008-5-21 16:55:00 | 只看该作者
    一般我遇到这个问题都是先看看是不是参数化迭代那里出了问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    42#
     楼主| 发表于 2008-5-21 16:47:11 | 只看该作者

    回复 41# 的帖子

    谢谢!请问那一堆的mmdrv.exe在哪可以看到呢?
    ---在“系统进程”里看:)

    [ 本帖最后由 blue_flower 于 2008-5-28 09:49 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 13:07
  • 签到天数: 3654 天

    连续签到: 106 天

    [LV.Master]测试大本营

    41#
    发表于 2008-5-21 16:03:54 | 只看该作者
    你可以在运行的时候,看看内存占用。
    就是有一堆的mmdrv.exe,你看看每个用多少内存,估计一下就行了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
     楼主| 发表于 2008-5-21 15:53:41 | 只看该作者

    更正

    1G内存的机器可以支持多少个虚拟用户运行呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
     楼主| 发表于 2008-5-21 15:52:49 | 只看该作者

    回复 38# 的帖子

    谢谢你的建议!我之前是用了两台机器作负载生成器的,因为公司测试的机器不多,顶多也只有3台。下次再试试用3台好了。不过我一直没弄明白,1G内容的机器可以支持多少个虚拟用户运行呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2008-5-20 15:43:45 | 只看该作者
    建议:
    1、负载生成机压力过大,多用几台机子,多启动几个代理看看!
    2、监控一下jvm的内存,看看服务器短的设置。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
     楼主| 发表于 2008-5-20 12:39:23 | 只看该作者
    CVS的说明在网上找到了不少,呵呵.
    想到另一问题:现在的测试工具这么多,如果用不同的测试工具对同一项目进行性能测试,测试出来的结果会不会一样呢?不知道有没有人实验过?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
     楼主| 发表于 2008-5-19 12:08:24 | 只看该作者
    这几天在忙别的项目都没有来这里了。但是很感谢各位给我的建议,在下一轮的测试中我会参考各位的方法,希望可以有更深的体会!
    PS:谁有CVS的使用说明书吗?盼望提供一下,谢谢!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-28 09:26 , Processed in 0.094423 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表