应用程序没有全速运行?

时间:2013-12-05 10:07:49

标签: performance io cpu disk

我有以下情况:

  • 机器1:从外部接收消息并处理它们(通过 Java应用程序)。对于处理它依赖于数据库(在机器上) 2)
  • 机器2:Oracle DB

作为效果指标,我通常会查看每次处理邮件的值。

现在,让我感到困惑的是:2台机器中没有一台正在“全速”工作。如果我查看典型参数(CPU利用率,CPU负载,I / O带宽等),两台机器看起来都不够用。

我的期望是一台机器或一个与性能相关的参数限制了整体处理速度。由于我无法观察到这一点,我期望更高的消息处理率。

任何可能限制整体表现的想法?什么是瓶颈?

以下是工作量期间的一些关键值:

机器1:

  • CPU负载平均值:0.75
  • CPU利用率:系统12%,用户13%,等待5%
  • 磁盘吞吐量:1 MB / s(写入),几乎没有读取
  • 平均tps(由iostat报告):200
  • 网络:500 kB / s in,300 kB / s out,1600 packet / s in,1600 packet / s out

机器2:

  • CPU负载平均值:0.25
  • CPU利用率:系统3%,用户15%,等待17%
  • 磁盘吞吐量:4.5 MB / s(写入),3.5 MB / s(读取)
  • 平均tps(由iostat报告):190(非常短的峰值到1000-1500)
  • 网络:250 kB / s in,800 kB / s out,1100 packet / s in,1100 packet / s out

所以对我来说,所有价值似乎都没有任何限制。

PS:当然测试消息队列总是满的,所以两台机器都有足够的工作要做。

1 个答案:

答案 0 :(得分:1)

要查找瓶颈,您通常还需要在应用程序中进行测量。这意味着分析Java应用程序代码,以及可能在Oracle内部发生的事情。

好消息是,您至少排除了一些可能的硬件瓶颈。