java - WebSphere 6.1 中的 CPU 使用率激增

标签 java multithreading websphere cpu-usage ibm-midrange

首先,简单介绍一下背景:

我们的一位客户在运行我们的一个 Web 应用程序的 WebSphere 实例时遇到 CPU 使用率峰值(其他应用程序的其他实例没有问题)。他们有一个测试环境和一个实时环境(都是 iSeries),它们都遇到了问题——每个实例设置一个应用程序。我们已经在我们自己的测试环境中本地部署了这个应用程序,并且还为所有在 iSeries 上的许多其他客户部署了没有类似问题的应用程序。

实际发生了什么:

每隔一秒左右,WebSphere 进程的 CPU 使用率就会跳到 7%-20% 之间的任何位置,即使没有正在处理的请求当时。客户报告看到峰值高达 30%。这些峰值平均占 CPU 的 1.5% - 其他 WebSphere 实例在空闲时通常使用 0%-0.1%

到目前为止我的调查

因此,我查看了线程。测试环境中的一个线程每秒使用 ~350 CPU 周期。他们的实时环境中的一个类似线程每秒使用 ~1500 CPU 周期(表明它有更大的 CPU)。这些线程的调用堆栈看起来像

Type  Program                  Statement         Procedure                    
      QLESPI     QSYS          17                LE_Create_Thread2__FP12crtt >
      QJVALIBJVM QSYS          7                 startThread__FPv             
 J    com/ibm/ws/util/Threa >                    run                          
 J    com/ibm/ws/util/Threa >                    run                          
 J    com/ibm/ws/util/Threa >                    getTask                      
 J    com/ibm/ws/util/Bound >                    poll

最后一行的整个类名是 com/ibm/ws/util/BoundedBuffer。我要求客户为我做一个 JVM 转储——我从中得到的唯一附加信息是线程名称:

Thread:  00002F82 Deferrable Alarm : 11

现在回答我的问题:

  • 鉴于这些症状,你们中的任何人都可以找出问题所在吗? (也许这是一个远景!)
  • 什么是可延期警报?从 JVM 转储中,我可以看到 4 个具有此名称的线程。其他三个似乎做得很好。通过调试我的本地 WebSphere(在 Windows 上)并在 BoundedBuffer 类中添加断点,我看到 BoudedBuffer 正在轮询并定期调用一些监听器。
  • 我无权访问客户机器的 WebSphere 控制台,而且他们不承认进行了任何配置更改。不过,我可以要求他们为我检查控制台 - 我应该让他们检查什么?
  • 我可以通过 telnet 访问客户邮箱,这里还有什么我可以调查的吗?查看 WebSphere 配置文件等?我应该查看哪些文件?
  • 因为调用堆栈和 JVM 转储没有明确引用我们的代码,可以安全地假设这是一个配置问题吗?

这是一个很长的问题,感谢您阅读到这里。

4 月 30 日更新 (1)

今天早上我注意到这种行为只发生在处理完当天的第一个请求之后(无论调用哪个 Web 服务)。这将矛头指向我们的应用程序或 Apache Axis。难道这只是正常行为?!

4 月 30 日更新 (2)

因此,此 CPU Activity 似乎是 Web 容器或 Apache Axis 中的某种内务管理 Activity 。我现在已经观察到这种情况发生在几个不同服务器上的几个不同的 Web 应用程序上。没有 Web 组件的应用程序不会遭受相同的额外 CPU 开销。

我想如果它是家政工作,那么“调整”它可能会适得其反 - 我的意思是,让应用服务器闲置得更好可能会对它可以做的“实际”工作量产生负面影响.

最佳答案

您可以尝试分析应用程序并进行堆转储,这可以回答一些与内存和 CPU 使用情况相关的问题。

关于java - WebSphere 6.1 中的 CPU 使用率激增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801471/

相关文章:

java - 在java中从末尾提取子字符串到第一个字母

Android:膨胀布局需要很长时间

JavaScript Worker - 并行写入控制台

cloud - IBM Cloud 目前无法创建帐户

java - 使用 MDB 的 WebSphere MQ 中的订阅者授权

java - Websphere中javacore、线程转储和堆转储的区别

带有 ß 字符的 Java 编译问题

java - 对于用户 id java.mail 抛出 'AUTHENTICATE failed.' ,但可以通过浏览器登录

java - 将具有本地依赖的 Maven 项目部署到 WildFly

VB.NET WinForms - 如何从BackgroundWorker的线程访问主线程的对象?