机器在压力下的零星行为

时间:2010-02-22 05:10:53

标签: java debugging stress-testing

我们正在做一些java压力运行(涉及网络IO)。最初事情都很好,系统响应速度非常快(测试2ms的平均延迟)。但几个小时后,当我重做相同的测试时,我观察到性能下降(20 - 60ms)。它是相同的Jar文件,相同的JVM,以及运行压力的相同LAN。我不明白这种行为的原因。

局域网是1GBPS,对于压力要求,我确信我们没有全部使用它。

所以我的QN:

  1. 是不是因为lans中的一些开关?
  2. 一段时间后机器是否会慢速运转(机器重新启动..在压力开始之前说好6个月后;它们是RHEL5,XEON 64位四核)
  3. 调试此类问题的一般方法是什么?
  4. 请帮忙吗?

    - 拉维

2 个答案:

答案 0 :(得分:0)

一些问题......

您控制了多少环境,是否采取了任何措施以确保每次运行的一致性?也就是说,您与其他系统共享网络,您使用的机器是否仅用于压力测试?

我对此的看法是开始收集有关您的机器和代码的详细信息。这意味着使用perfmon(windows)sar(unix)来找出操作系统和硬件正在做什么并获得一个分析器,以确保您的代码执行相同的操作并帮助确定从代码角度出现瓶颈的位置

没有什么非常详细,但我希望这有助于你开始。

答案 1 :(得分:0)

一般方法是“衡量一切”。这尤其可能意味着:

  1. 确保所有服务器上的时间相同(使用ntp或类似的东西);
  2. 衡量生成请求需要多长时间(如果请求生成器有错误怎么办?);
  3. 测量请求何时离开客户端计算机,或者至少执行i / o需要多长时间。有时候知道许多请求所需的平均时间就足够了。
  4. 测量请求何时到达。
  5. 衡量生成响应需要多长时间。
  6. 衡量发送回复需要多长时间。
  7. 你可以从第5个元素开始,因为这是(你相信)你的关键链。但最好尽可能多地记录 - 根据你自己所说的,产生不同结果需要

    如果您不想修改代码,请查找可以在不干预的情况下嗅探数据的情况(例如,在web.xml中定义servlet过滤器)。