我们需要加载测试我们的服务器,我们的目标是模拟100K并发用户。 我创建了一个junit脚本,它接收一个NUM_OF_USERS参数并对我们的服务器运行脚本。
问题是我们需要大量用户(100K),并且运行此测试的单个PC可能只需要1000个用户。
我们怎样才能完成这项任务?任何工具?
PS - 如果我们可以从多个pc运行这个junit测试并且不使用需要配置相关参数的工具那将是非常好的。(我们花了很多时间创建这个脚本并且想避免过渡到不同的工具)
答案 0 :(得分:0)
正如您所知,开启100K线程是不可能的。但是你真的不需要100K线程。人类用户的行为相对较慢。每10秒执行一次最大操作或类似的操作。
因此,您可以创建大约100个线程,但每个线程应该模拟1000个用户。如何模拟?您可以保存1000个表示用户状态的对象,按顺序或随机进入列表,执行下一个用户的操作并执行它。
您可以自己实现,也可以使用Actors模型框架,例如: Akka
如果你现在不想使用Akka,你可以使用JMeter改进第一个解决方案。您可以将插件实现到JMeter,您可以在一个线程中使用模拟多个用户的相同逻辑,但线程池将由我的JMeter管理。作为一项好处,您将获得报告,时间测量和可配置负载。
答案 1 :(得分:0)
您无需模拟100k用户即可大致了解100k用户的性能。由于您的模拟不会完全模仿真实用户,您已经接受了一些不准确的信息,为什么不进一步?
您可以使用100,300和1000个模拟用户(您说计算机将管理的用户)测量性能,并查看趋势。也就是说,您可以创建一个性能模型,并使用该模型通过外推来估计性能。计算的成本(例如,CPU时间或内存)可以用幂律近似:
C = C0 N ^ p
其中 C 是成本, C0 是未知成本常数, N 是问题大小(用户数量,对于您而言) case)和 p 是一个未知数字(可能在0到2的范围内)。