51Testing软件测试论坛

标题: 并发用户的数量根据什么来确定? [打印本页]

作者: blue_flower    时间: 2008-6-12 11:08
标题: 并发用户的数量根据什么来确定?
测试一个系统,要求可以允许20000人在线使用,现在要测试它的最大并发用户数。并发用户数和使用人数的关系怎么换算呢?查找过不少资料,都认为并发用户数取在线使用人数的5%~20%,到底是不是这样呢?我现在测试并发登陆,发现能过的并发用户数只有500人,那能说明系统的使用人数只有2500~10000人吗?

[ 本帖最后由 blue_flower 于 2008-6-12 13:18 编辑 ]
作者: blue_flower    时间: 2008-6-12 11:22
还有下面这个是什么错误呢?
Action.c(17): Error -27791: Server "192.168.1.114" has shut down the connection prematurely
作者: zhangj8826    时间: 2008-6-12 11:29
我认为并发用户数量应该就是按照5%—20%的比例。
我在做性能测试的时候也出现了LS的那中错误,查了很多资料也只是给了大概的说法:
-------------------------------------------------------------------------------------------------
A、应用服务死掉。
   (小用户时:程序上的问题。程序上处理数据库的问题)
•B、应用服务没有死
   (应用服务参数设置问题)
    例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
•C、数据库的连接
   (1、在应用服务的性能参数可能太小了 2、数据库启动的最大连接数(跟硬件的内存有关))
-----------------------------------------------------------------------------------------------------------
我们的程序是后来将登陆时候的连接池修改了才通过的
作者: blue_flower    时间: 2008-6-12 11:44
标题: 回复 3# 的帖子
谢谢zhangj8826帮忙分析!
那个资料我也曾看过的,但是不是很明白。我的服务器没有死,服务器的内存和CPU都还不错,500个用户时响应时间也不大,但是用户数量就是上不去,超过500多一点就出错。服务端用的是tomcat,数据库启动的最大连接数是1000,至于“应用服务的性能参数”这个不知道是指哪里,不太清楚。不知道是什么原因,还要设置什么地方啊?
作者: blue_flower    时间: 2008-6-12 11:50
对了,zhangj8826,你说“我们的程序是后来将登陆时候的连接池修改了才通过的”,你的是什么数据库啊,我的是MYSQL,将登陆连接池的100改为了500,还是不行呢.这个数要设为多少才合适啊?

[ 本帖最后由 blue_flower 于 2008-6-12 12:17 编辑 ]
作者: zhangj8826    时间: 2008-6-12 12:46
我们用的是数据库是oracle,再有运行的时候看看服务器的端口是不是被占用完了,也就是端口释放不及时呢
作者: blue_flower    时间: 2008-6-12 12:51
标题: 回复 6# 的帖子
恩,谢谢!我检查看看.
作者: blue_flower    时间: 2008-6-12 13:03
可是看服务器的哪些端口呢?
作者: liming_oicq    时间: 2008-6-12 14:38
对于一个被测试系统,首先要分析出来典型的操作,都有哪些典型操作,这些操作的比例是多少,通过这个比例进行压力测试
作者: zhangj8826    时间: 2008-6-12 15:07
具体的要看哪些端口,你去问下开发的,程序运行占用的是哪些端口
作者: blue_flower    时间: 2008-6-13 11:24
原帖由 zhangj8826 于 2008-6-12 15:07 发表
具体的要看哪些端口,你去问下开发的,程序运行占用的是哪些端口

好的。谢谢你。我已让开发人员查找数据库问题了。
作者: blue_flower    时间: 2008-6-13 12:34
原帖由 liming_oicq 于 2008-6-12 14:38 发表
对于一个被测试系统,首先要分析出来典型的操作,都有哪些典型操作,这些操作的比例是多少,通过这个比例进行压力测试

谢谢!但我们目前没有任何需求,我们是研发一个新的产品,只知道会有20000人使用,其他具体的操作情况没有相关资料.暂时只是测试登陆的功能,想确定可以允许多少用户并发登陆.
作者: kasimxiao    时间: 2008-6-13 13:33
先按5%-20%并发测试,找到每秒处理最多的那一点,以及出现失败请求的那一点,再做具体分析
作者: blue_flower    时间: 2008-6-13 14:56
原帖由 kasimxiao 于 2008-6-13 13:33 发表
先按5%-20%并发测试,找到每秒处理最多的那一点,以及出现失败请求的那一点,再做具体分析

恩,先谢谢你。只有按照这样处理了,系统让开发人员调整了一下,好象变差了呢,原来500个用户没有问题,现在200都过不了了。都是内部错误:
Action.c(17): Error -26612: HTTP Status-Code=500 (Java_heap_space) for "http://192.168.1.101:8000/login.bbs;jsessionid=l5m9xo8wtrrc"  之类的。
作者: hmilyjch    时间: 2008-6-13 15:45
tomcat的参数有没有调整呢?
作者: kasimxiao    时间: 2008-6-13 16:39
补充一点,这个5%-20%并不是所有系统都试用,这只是OA系统并发用户数量的经验公式,貌似是的,哈哈
作者: blue_flower    时间: 2008-6-16 09:53
原帖由 hmilyjch 于 2008-6-13 15:45 发表
tomcat的参数有没有调整呢?

调整的,后来条了一下虚拟内存和堆栈的大小吧。调整来调整去的,现在又好点了,过500个没有问题了,不过响应时间还不行,要10秒左右,对于局域网来说太慢了。
作者: blue_flower    时间: 2008-6-16 09:56
原帖由 kasimxiao 于 2008-6-13 16:39 发表
补充一点,这个5%-20%并不是所有系统都试用,这只是OA系统并发用户数量的经验公式,貌似是的,哈哈

恩。我们将要做的就是OA系统,不过后来老板要求要按30%来算,难度更大了。
作者: joetree    时间: 2008-6-16 10:13
30%的 OA...还有,上线用的服务器环境和你现在的服务器环境是一样的吗?
不一样的话,需要进行并发数调整的
如果一样。。。。。那就使劲吧,说实在的,500并发到10秒,也不是很坏的结果了
作者: adiao    时间: 2008-6-16 10:17
JVM的问题?
我上次测试系统用户超过300就出错,听开发讲my sql 的JVM最大只能设置为多少来着,不能再高了。
作者: blue_flower    时间: 2008-6-16 15:41
原帖由 joetree 于 2008-6-16 10:13 发表
30%的 OA...还有,上线用的服务器环境和你现在的服务器环境是一样的吗?
不一样的话,需要进行并发数调整的
如果一样。。。。。那就使劲吧,说实在的,500并发到10秒,也不是很坏的结果了

应该不一样吧,现在是局域网啊,放到外网会更慢的。现在在内部要求要2秒左右呢,但是100用户并发就要2秒了。所以让开发的再设置好了。
作者: blue_flower    时间: 2008-6-16 15:43
原帖由 adiao 于 2008-6-16 10:17 发表
JVM的问题?
我上次测试系统用户超过300就出错,听开发讲my sql 的JVM最大只能设置为多少来着,不能再高了。

反正我现在测试最多就过500,550都不行。不管怎样测试,都500多一点而已,可能和它有关吧
作者: Wins    时间: 2008-6-19 22:50
并发数是在某一特定时段内同时连接的数量。
当请求需要通过web server进行请求并需要web server返回处理结果。这里的并发数是相对web server而言的,也就是说,需要关注的是web server 连接池最大能处理的连接数量,不管tomcat,apache,weblogic等都好,都是一样的道理,需要调整的是这里的参数。至于DB,那是web server 跟它之间的通信了。
简言之,连接池的数量、作用时效决定并发数。
作者: blue_flower    时间: 2008-6-20 09:57
标题: 回复 23# 的帖子
谢谢Wins!原来是web server 的设置决定的呀,那我让开发人员看看它的设置。
作者: 森林一木    时间: 2008-6-20 10:08
确定并发数方法:
首先申明,个人经验,仅供参考
1、录制一个脚本,运行一次,看有多少个请求,假设请求数为A;
2、按经验值,取15%左右,持续运行一段时间,比如20分钟,看共有多少个请求,假设请求数为B;
3、B/A=用户数,这里得出在一段时间内,模拟出的在线用户数,如果这个数据与你的20000有差距,则再调整并发数;
4、性能测试不是一次就能做好的,个人经验是多次测试求一个平均值,就像喝红酒一样,慢慢品才有收获,呵呵。
作者: maihua258    时间: 2008-6-20 10:58
请问森林一木:
    恕我无知,请求数该怎样看呢?谢谢了
作者: blue_flower    时间: 2008-6-20 14:43
标题: 回复森林一木的帖子
谢谢!我也不知道请求数是指什么,是指事务吗?
还有这个:“3、B/A=用户数,这里得出在一段时间内,模拟出的在线用户数”,这个一段时间是说(比如刚才运行了20分钟)20分钟内的在线用户数吗?还是说用户数需要除以20分钟才能得到?
希望你可以再说明一下啊。非常感谢你!
作者: 森林一木    时间: 2008-6-20 15:27
原帖由 blue_flower 于 2008-6-20 14:43 发表
谢谢!我也不知道请求数是指什么,是指事务吗?
还有这个:“3、B/A=用户数,这里得出在一段时间内,模拟出的在线用户数”,这个一段时间是说(比如刚才运行了20分钟)20分钟内的在线用户数吗?还是说用户数需要除以 ...


不客气,请求数就是里面的点击数:hit,这个表示了在一个业务流程中的请求数。举个例子,一个用户,不设置持续时间,运行场景,完成后的hit数就是该业务流程的请求数,这样就可以得出A了。然后根据经验值,并发数取测试要求的15%左右做并发,并根据需要设计持续时间,比如OA系统中的考勤系统,一般可能的使用高峰在8:40到9:15左右(根据实际情况来),那么持续时间可设计为35分钟,运行完成后再统计总的hits数,即得到B,这样就可以用B/A,得出一共完成了多少个考勤事件了。那么一般情况下,每个员工都是进行一次考勤操作,这样就可以知道在35分钟内,支持多少用户了,如果跟你的要求有差距,再慢慢调整吧。多了,系统没有问题,那表示性能不错,少了,再增加并发数,争取达到要求。还是强调一下,性能测试不是简简单单的靠一两次测试就找到问题的,得多次测试,进行比较分析定位。
仅供参考!

[ 本帖最后由 森林一木 于 2008-6-20 15:36 编辑 ]
作者: blue_flower    时间: 2008-6-20 16:22
标题: 回复森林一木 的帖子
非常感谢你的耐心指导!我明白你说的意思了,我将按照你的方法测试看看。“性能测试不是简简单单的靠一两次测试就找到问题的,得多次测试,进行比较分析定位。”你说得很有道理!再次谢谢你的解答!
作者: sunshinelius    时间: 2008-6-23 10:08
楼主碰到的问题在软件性能测试规划中具有相当的普遍性。
在性能测试的入门初级阶段,关注点往往在技术上,比如架构分析,loadrunner脚本开发等等;但如何把性能测试真正地做好,以最少的重复工作量找出尽可能多的性能瓶颈,并且最终提交一份量化的逻辑清晰有说服力的性能测试报告,这更多依赖于一个高效高质量的性能测试过程模型。
建议楼主和其他朋友可考虑参考GAME过程模型:
一.G(Goal):你的性能测试目标是什么?是定位瓶颈?还是验证新增的模块对原有系统有无性能影响?还是寻找一个最优的硬件配置?还是保证系统在高负荷下有良好的健壮性?等等。不同的目标应该选择不同的性能测试策略
二.A(Analysis) :要分析。1. 用户有几种类型?每种类型的用户的典型业务场景是什么?以怎样的概率分配?2. 系统的架构如何?有几个节点组成?用户的业务压力会经过几个系统节点?
三.M(Metric)度量:把analysis分析结果转换成loadrunner的度量。比如业务场景转化成controller场景,用户典型操作转化成VU脚本,业务配比转化成controlelr百分比模式等等
四. E(Execution):  开发,调试,运行脚本和场景
五. A(Adjust)调整:调优和修改程序
有两点注意:
1. 上面的每一步都应该是一个里程碑,如果这一步不能得出明确答案,就不能向下一步转移。
2. 和性能测试工具相关的过程(脚本开发,场景监控等等)只有第四步Execution,因此工具只是性能测试规划中一个实现手段而已,对于性能测试的高级人员来说,应该把关注点分配到其他过程步骤中去
以上GAME模型在本人的《性能测试从零开始-loadrunner入门》一书中有详细的介绍和案例分析。呵呵。在这里为自己做个广告。
好,回到楼主的问题来。楼主应该是在analysis阶段遇到的问题。在解决这个问题之前,楼主应该澄清几个概念:
1. 系统注册用户数!=在线用户数
2. 在线用户数!=并发用户数
至于几个数字是多少配比关系,可以根据你的业务模型来决定。
作者: 森林一木    时间: 2008-6-23 10:53
打广告没错,可得看时候。回答问题说点实际的,书好自然有人看的。

[ 本帖最后由 森林一木 于 2008-6-23 11:03 编辑 ]
作者: blue_flower    时间: 2008-6-23 18:04
标题: 回复sunshinelius
恩,我也相信我遇到的问题具有普遍性。可我还没有经验只有向前辈请教来学习。打广告也罢,你提出好的观点就不错。如果有不错的书我会看的。
1. 系统注册用户数!=在线用户数
2. 在线用户数!=并发用户数
这个我是知道的。
如果有好书可以介绍一下!谢谢!

[ 本帖最后由 blue_flower 于 2008-6-23 18:07 编辑 ]
作者: blue_flower    时间: 2008-6-23 18:06
标题: 回复 森林一木
感谢你一直的支持!!
作者: Wins    时间: 2008-6-23 22:28
哈哈,说得都没错。但是太高深。那是从业务角度看的问题。当我们一个劲在评估平均事务处理能力,平均消耗时间、吞吐量的时候,实际上都是以黑盒的方式去看“世界”。这也是正常的思维习惯。换个角度,这是容量测试的一个范畴。我也有一个“取款机”模型可以摆显,但是有什么用?性能测试不是一朝一夕的。
只是一直都很奇怪,为什么没有人从后台系统地去看这个问题。

本人专攻性能测试,如有兴趣,可以找我切磋。
作者: 森林一木    时间: 2008-6-24 10:42
楼上的不错,加qq聊聊啊,多向你请教请教。

如果说考虑后台,确实很多时候性能测试要考虑的很多,比如监控平台的,数据库日志的、程序代码的,等等。但具体问题分析起来并非易事。性能测试做起来容易,真正的发现问题、定位问题并解决它却是难度非常大。
作者: blue_flower    时间: 2008-6-24 16:34
大家多多交流,知识是累积出来的!
作者: Wins    时间: 2008-6-30 23:31
个人觉得应该确定一些业务模型,加载性能测试类型,通过监控系统模块中的每一个环节,包括前台、web server、中间件、数据库等监控,先做每一组件的配置调优,结合操作系统以及各服务器资源,通过前面的业务测试类型负载,得到每一环节的监控指标,做线性(横向及纵向)数据分析。前提是我们需要对硬件资源、不同服务器的各类服务、接口逻辑、编码程序都有一定深度的了解,常年软件领域得来的综合分析能力。
这基本是我能说得了。最好具体情况具体分析。
作者: blue_flower    时间: 2008-7-1 08:44
Wins,我觉得你说得很有道理,考虑的很全面。也正如你所说,具体情况具体分析。目前我的系统只是一个框架,只有登陆功能做出来了其他的还在设计当中,所以要想分析具体的业务还不具备条件,只能下一步了。当然非常感谢你提供建议和帮忙分析。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2