负载测试 - 需要运行模拟100K用户的测试

时间:2014-06-25 08:05:05

标签: java junit load

我们需要加载测试我们的服务器,我们的目标是模拟100K并发用户。 我创建了一个junit脚本,它接收一个NUM_OF_USERS参数并对我们的服务器运行脚本。

问题是我们需要大量用户(100K),并且运行此测试的单个PC可能只需要1000个用户。

我们怎样才能完成这项任务?任何工具?

PS - 如果我们可以从多个pc运行这个junit测试并且不使用需要配置相关参数的工具那将是非常好的。(我们花了很多时间创建这个脚本并且想避免过渡到不同的工具)

2 个答案:

答案 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的范围内)。

相关问题