【问题标题】:sporadic behavior by the machines in stress机器在压力下的零星行为
【发布时间】:2010-02-22 05:10:52
【问题描述】:

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

局域网是 1GBPS,我确信我们不会全部使用它。

所以我的 QN:

  1. 可能是因为 lan 中的某些开关?
  2. 机器是否会在一段时间后变慢(机器已重新启动.. 说大约 6 个月前压力可以开始;它们是 RHEL5,XEON 64 位四核)
  3. 调试此类问题的一般方法是什么?

有什么帮助吗?

-- 拉维

【问题讨论】:

  • 您确定这与您的应用程序无关吗?你有介绍吗?几乎所有这些问题的答案都在您的代码中,它访问数据库的方式(数据在长期运行中也会增加)以及您对数据库的调整程度(索引、会话等)

标签: java debugging stress-testing


【解决方案1】:

几个问题...

有多少环境在您的控制之下,您是否采取了任何措施来确保每次运行都保持一致?即您是否与其他系统共享网络,您使用的机器是否仅用于压力测试?

我看待这个问题的方式是开始收集有关您的机器和代码的详细信息。这意味着使用 perfmon (windows) sar (unix) 来找出操作系统和硬件正在做什么,并附加一个分析器以确保您的代码正在做同样的事情并帮助从代码角度查明瓶颈发生在哪里.

没有非常详细的内容,但我希望能帮助您入门。

【讨论】:

    【解决方案2】:

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

    1. 确保所有服务器上的时间相同(使用 ntp 或类似的东西);
    2. 测量生成请求需要多长时间(如果请求生成器有错误怎么办?);
    3. 衡量请求何时离开客户端计算机,或者至少需要多长时间才能执行 i/o。有时,知道许多请求所需的平均时间就足够了。
    4. 测量请求何时到达。
    5. 衡量生成响应需要多长时间。
    6. 衡量发送响应所需的时间。

    您可能可以从第 5 个元素开始,因为这是(您相信)您的关键链。但最好尽可能多地记录 - 根据您自己所说的,产生不同的结果需要 几天

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

    【讨论】:

      猜你喜欢
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 2012-03-10
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多