我是标记java服务器的工作台。我每次执行测试5次。每次测试发送到服务器的平均请求是1000(每秒)。服务器在每次测试中平均创建1000个线程。我每次进行5次测试。服务器在每次测试中平均创建1000个线程,但是我从jconsole获得的堆内存素材在每次测试时都显示了不同的模式。下图显示了java服务器在每次测试时创建了1000个线程,但每次运行时使用了不同数量的堆,尽管每个测试都使用相同的输入参数执行。我在这里缺少什么?在运行测试之前,我没有更改堆或堆栈大小。请帮助我理解我的java服务器在不同的运行中使用的堆内存。
答案 0 :(得分:1)
我建议使用Profiler工具来检查所有场景中堆中的对象以及不同之处,选项包括:
(后两者是非自由的)
差异可能由多种原因引起:GC activity,预热缓存,JIT compilation,Java运行时优化等。
一个好的做法是逐渐增加 的负载,这样你就可以让JMeter和被测应用程序“热身”。您还可以将增加的负载与响应时间,吞吐量,错误数等其他指标相关联。有关实现不同负载模式的更多详细信息,请参阅JMeter Ramp-Up - The Ultimate Guide文章。