Weblogic密集型CPU使用率

我在Solaris机器(VM)上使用了Weblogic 10.3.4 + Oracle DB,

不幸的是,上周我们在Weblogic上托pipe的应用程序变得非常缓慢,无法为新用户提供服务(一切都持续了1小时)。

为了找出原因,我们从操作系统级别,数据库级别询问报告。

报告显示:

  • 一个非常敏感的CPU使用情况。 (显然是使用该系统的用户数量的一个高峰)
  • 连接池达到Weblogic的最高限制(200个连接!)
  • 来自Db的AWR统计显示响应时间下降。

现在谁是第一个鸡或鸡蛋?

一个非常慢的数据库可能会导致WEBlogic变慢,并达到从池中的最大连接数。

但是,如果CPU使用率很高,那么可能是因为持有数据库连接的线程太繁忙,以至于不能将连接返回到池(因为处理器正忙)。==>新客户端来了一个新连接assgined等…所以连接池可能会用这种方式… …?

问候

克里斯

高CPU使用率通常是由尝试在JVM堆空间,perm gen等中收集空闲内存的Java垃圾收集器引起的。如果是这种情况,则需要添加更多的内存,通常添加到JVM堆中。 请参阅-Xmx JVM选项。

当JVM中的CPU使用率较高时,请尝试使用CPU来确定哪个线程正在运行。 在问题创build2-3 pkill -3 java线程转储。 线程转储将位于(for Solaris) /proc/<JVM_PID>/path/1

如果线程池将达到其限制,您应该在日志中看到错误。 CPU使用率不应该因此而上升。 这是一个事件驱动的环境,不需要进行共享。

慢数据库实际上可以降低应用程序服务器上的CPU使用率。 取决于应用程序的编程/configuration。