`
totti19841106
  • 浏览: 76427 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

weblogic8/redhat linux上weblogic进程占用CPU高实例

阅读更多
注:部分内容由tdy218提供

[bea@mylinux ~]$ ps -ef|grep java
bea       3135  3115  0 16:33 pts/0    00:00:05 /home/bea/bea8/jdk142_05/bin/java -server -Xms256M -Xmx256M -Dweblogic.Name=myserver -Dweblogic.ProductionModeEnabled=true -Djava.security.policy=/home/bea/bea8/weblogic81/server/lib/weblogic.policy weblogic.Server


然后进行如下的操作:
[bea@mylinux ~]$ ps -Lp 3135 cu
USER       PID   LWP %CPU NLWP %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
bea       3135  3135  0.1   63 23.5 514408 121584 pts/0 Sl   16:33   0:05 java
bea       3135  3136  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3137  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3138  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3139  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3140  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3141  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3142  0.1   63 23.5 514408 121584 pts/0 Sl   16:33   0:05 java
bea       3135  3143  0.1   63 23.5 514408 121584 pts/0 Sl   16:33   0:05 java
bea       3135  3144  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3145  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3146  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3147  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3148  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3149  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3150  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3151  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3152  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3153  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3154  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3155  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3156  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3157  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3158  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3159  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3160  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3161  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3162  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3163  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3164  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3165  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3166  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3167  9.8   63 23.5 514408 121584 pts/0 Rl   16:33   5:46 java
bea       3135  3168 11.2   63 23.5 514408 121584 pts/0 Rl   16:33   6:35 java
bea       3135  3169 24.7   63 23.5 514408 121584 pts/0 Rl   16:33  14:30 java
bea       3135  3170 25.0   63 23.5 514408 121584 pts/0 Rl   16:33  14:42 java
bea       3135  3171  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3172  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3173  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3174  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3175  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3176  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3177  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3178  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3179  0.1   63 23.5 514408 121584 pts/0 Sl   16:33   0:04 java
bea       3135  3180  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3181  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3182  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3183  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3185  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3186  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3187  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3188  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3189  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3190  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3191  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3192  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3193  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3194  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3195  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3196  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3197  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
bea       3135  3198  0.0   63 23.5 514408 121584 pts/0 Sl   16:33   0:00 java
[bea@mylinux ~]$


本文档的目的是为了诊断java进程占用CPU异常过高故障的,使用ps命令看到的CPU%并非当前的CPU占用值,是个历史值,要想获得当前的、准确的CPU占用率,需用top命令

然后运行一个可以造成CPU占用很高(死循环等)的java web程序:
关键代码(好久没写代码了,很A级的一段代码):
package tdy218.alg;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public  class DeadLoop extends HttpServlet{

   public void init(ServletConfig config) throws ServletException
   {
         super.init(config);
   }

   public void service(HttpServletRequest request,HttpServletResponse response) throws IOException
   {
        try{
             while(true){
                   Math.exp(Math.PI);  //求欧拉数e的π次幂.
                  }
            }
       catch(Exception e){
             while(true){
                  Math.exp(Math.PI);
                 }
            }
      }
}

部署并运行.


接着执行下面的命令:
[root@tdy218 alone_domain]# top -Hp 2577 -d 1 -n 1
Tasks:  53 total,   2 running,  51 sleeping,   0 stopped,   0 zombie
Cpu(s): 39.5%us, 15.6%sy,  0.0%ni, 30.4%id, 14.2%wa,  0.1%hi,  0.3%si,  0.0%st
……………………
PID USER     PR  NI  VIRT  RES  SHR S %CPU %MEM TIME+   UID COMMAND
2577 root     15   0  612m 587m 1512 S  0.0 61.5   0:28.62    0         java   
2580 root     22   0  612m 587m 1512 S  0.0 61.5   0:00.00    0         java   
2581 root     18   0  612m 587m 1512 S  0.0 61.5   0:00.00    0         java   
2582 root     18   0  612m 587m 1512 S  0.0 61.5   0:00.00    0         java   
……………………
2602 root     19   0  612m 587m 1512 S  0.0 61.5   0:00.00    0         java   
2603 root    25   0  612m 587m 1512 R 95.6 61.5   4:02.32    0         java   
……………………
可以多执行几次(更准确),并将结果输出到一个文件中,可加"-b”参数.
如果还想对CPU占用进行排序,可结合sort等排序命令(看sort命令的帮助).
然后记下这个PID为2603的线程,并对该java进程做kill -3操作:
kill -3 2577
做完上面的操作,你将得到两个重要的信息:一个是占用CPU最高的1个或多个pthread id(即上面的PID列,其实就是LWP对应的内核线程号)和Thread Dump信息(对于WebLogic Server来说,默认在标准输出中,如果在启动时指定了标准输出重定向到一个文件中,那么请找从该文件中找到本次kill -3操作生成的Thread Dump的完整信息,另存到一个文本文件中,文件名自定)。


从上一步拿到的占用CPU很高的1个或多个内核线程号(pid)和Thread Dump信息,根据WebLogic Server使用的JVM的供应商不同,分下面2个分析方法:
1.使用的是Sun HotSpot JVM
需将那个(些)内核线程号(pid)转换成16进制的值,在Thread Dump信息信息中搜索nid等于该值的线程即可,如下:
"ExecuteThread: '14' for queue: 'weblogic.kernel.Default'" daemon prio=1 tid=0x09d11df0 nid=0xa2b runnable [0x8a127000..0x8a1281a8]
        at java.lang.StrictMath.exp(Native Method)
        at java.lang.Math.exp(Math.java:234)
        at tdy218.alg.DeadLoop.service(DeadLoop.java:17)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        …………………
由于JVM使用的glibc版本等原因,Sun HotSpot JVM 1.4.2 update 11(包含该版本)的threaddump信息中不包含nid,这时需要升级Sun HotSpot JVM 1.4.2 update 11的小版本即可,如: update 12,在1.4.2这个大版中,也是从这个版本开始支持发生OutOfMemoryError故障时生成HeadDump文件的。
2.使用的是Oracle JRockit JVM
只接拿那个(些)内核线程号(pid) 的值,在Thread Dump信息信息中搜索tid等于该值的线程即可(从 JRockit 的 70SP4RP2 和 81SP2RP1 以后的版本起,就可实现此映射,Linux下WebLogic Server自带的JRockit R26.3就是在他们之后的版本),因为JRockit JVM的Thread Dump信息中不包含nid的值,不过JRockit JVM提供一个更简单的tid,等于那个(些)内核线程号(pid)的值,而且是十进制的,无需进行进制转换。如下:
"ExecuteThread: '14' for queue: 'weblogic.kernel.Default'" id=25 idx=0x32 tid=2603 prio=5 alive, in native, daemon
    at <unknown>(???.c)@0xb7fc4402
    at ptWaitForEvent+45(:0)@0xb7e92b31
    at vmtWaitUntilNotSoftSuspended+70(:0)@0xb7e9e436
    at tsCheckTransitToJava+26(:0)@0xb7e9e50a
    at java/lang/StrictMath.exp(D)D(Native Method)
    at java/lang/Math.exp(D)D(Math.java:234)[optimized]
    at tdy218/alg/DeadLoop.service(Ljavax/servlet
    /http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V
    (DeadLoop.java:17)
     ………………………
分享到:
评论

相关推荐

    linux下weblogic新建域操作过程

    本篇主要介绍如何在Redhat 5.5系统上,使用英文版的WebLogic 8.1.6版本创建一个新的基本WebLogic服务域。 首先,确保WebLogic的安装目录为`/weblogic/weblogic81/`。创建新域的操作步骤如下: 1. **进入WebLogic ...

    Linux安装部署weblogic

    本章节详细介绍了统一权限平台所依赖的软硬件环境的安装与配置,包括操作系统(RedHat Enterprise Linux Server 5/6, 简称 RHEL5/6)、Java Development Kit (JDK)、Oracle WebLogic Server、Apache ActiveMQ、...

    Redhat Linux下部署大型J2EE工程的实例研究.pdf

    这个实例研究提供了一个具体的部署流程,对于在Redhat Linux上实施大型J2EE项目具有很强的参考价值。通过这种方式,可以克服Linux在可用性方面的不足,实现高效、安全的电子政务平台部署。同时,这种开放源码的组合...

    weblogic集群部署forlinux.docx

    本文详细介绍了如何在 Linux 平台上部署 WebLogic Server 集群,包括集群部署的必要条件、集群规划、安装和配置 WebLogic Server 集群、使用 Configuration Wizard 工具和 Managed Server 实例等内容。通过遵循本文...

    RedHat安装WebLogic11g软件及Web工程的部署.docx

    本教程将详细解释如何在Red Hat系统上安装WebLogic 11g以及部署Web应用程序。 首先,我们需要安装Java Development Kit (JDK)。WebLogic Server需要JDK来运行,因此这是安装的第一步。在Red Hat中,你可以通过RPM包...

    RedHatLinux 安装WebLogic9.2及部署应用

    WebLogic Server 实例是指运行在特定主机上的 WebLogic Server 应用服务器进程。它可以是 Admin Server 或 Managed Server。 ##### 3.3 Domain 和 WebLogic Server 的关系 - **Admin Server**:负责管理整个 ...

    RedHatLinux 安装WebLogic9.2MP2

    在本教程中,我们将...总的来说,安装WebLogic Server 9.2 MP2在RedHat Linux上是一个涉及多步骤的过程,需要对Linux系统和Java应用服务器有一定了解。遵循本教程,你将能够成功完成安装并开始使用WebLogic Server。

    RedHat系统安装Weblogic11g及创建域

    【RedHat系统安装Weblogic11g及创建域】是一个涉及Linux操作系统、Oracle WebLogic Server部署和管理的技术主题。WebLogic是Oracle公司的一款企业级应用服务器,常用于部署和管理Java EE应用程序。以下是对该主题的...

    redhat as4 weblogic92 apache plugin配置

    6. **负载均衡与故障转移**:通过Plugin,可以在多个WebLogic实例间实现负载均衡,提高系统的可用性和可靠性。当某个WebLogic实例出现故障时,Plugin能够自动将流量转移到其他正常运行的实例。 7. **安全性**:配置...

    redhat4下oracle10g的配置,weblogic的配置

    在Red Hat Enterprise Linux 4 (RHEL4)操作系统上配置Oracle 10g数据库和WebLogic服务器是一项技术性较强的任务,涉及到多个步骤和注意事项。Oracle 10g是一款广泛使用的数据库管理系统,而WebLogic Server是Oracle...

    Nginx实现tomcat与weblogic集群的负载均衡及故障处理

    如果某个Tomcat或WebLogic实例宕机,Nginx会自动停止向该实例发送请求,直到它恢复。此外,可以通过调整Nginx配置中的权重参数来实现故障切换时的流量重新分配。 对于性能调优,Tomcat可以通过调整`server.xml`中的...

    RedHat安装WebLogic11g软件及Web工程的部署.pdf

    在本教程中,我们将深入探讨如何在Red Hat操作系统上安装Oracle WebLogic Server 11g以及部署Web应用程序。WebLogic Server是一款由Oracle公司提供的企业级Java应用服务器,它提供了管理和运行分布式Java应用程序和...

    weblogic9.2配置文档

    #### 1.1 WebLogic 9.2 for Redhat AS4.0的安装步骤 1. **以root身份登录**:由于安装WebLogic需要对系统文件进行操作,因此通常需要具有管理员权限。 2. **创建WebLogic用户组**:为了安全性和管理的便利,通常会...

    2.centos7配置jdk-oralce11gr2-weblogic.docx

    每个步骤都详细说明了操作过程和其背后的原理,对于学习和实践 Linux 系统下的企业级软件部署具有很高的价值。记住,安全性和权限管理是关键,所以在安装过程中务必注意用户、组和目录的权限设置。

    weblogic集群测试.pdf

    在集群中,所有服务器实例共同承担工作负载,提供高可用性、扩展性和负载均衡等特性。集群中的WebLogic服务器通过内部通信机制(比如IIOP、RMI等)和分布式对象管理来实现负载均衡和故障转移。 ### 故障转移...

    RHEL5+ORACLE11G+WEBLOGIC+JDK终极教程

    在软件安装方面,操作系统选择了Redhat Enterprise Linux 5.4 x86-64。数据库软件为ORACLE 11g R2,适用于x86_64架构,JDK选用的是jdk-6u15-linux-x64版本,而WebLogic服务器的版本为10.3.3。安装步骤如下: 1. 将...

    Linux中安装WebSphere7部署手册

    WebSphere的概要文件类似于WebLogic的域,是服务器运行环境的一个实例。你可以通过命令行创建Dmgr(管理代理)服务器,例如在`${WAS_Home}/bin`目录下运行`./manageprofiles.sh -create -templatePath /home/IBM/...

    Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结文档

    在Red Hat Enterprise Linux 6(RHEL6)这样的Linux操作系统环境中部署ASM时,常常会遇到系统重启后设备名发生变化的问题,这主要是因为Linux内核的设备命名机制导致的。在这种情况下,udev这个设备管理器可以帮助...

    [手工整理]208个Oracle安装文档,包含各个平台各个版本的单实例RAC以及DataGuard(1).xlsx

    95 Oracle Linux 5和6上的Oracle WebLogic Server 96 Oracle OCP课程实验v1.7 97 Oracle 迁移至 PostgreSQL 在华为 ARM 上的解决方案 98 Oracle 数据库隐含参数设置 99 Oracle 隐含参数 100 Oracle 诊断事件及...

    企业级Tomcat部署实践及安全调优1

    目前,Tomcat的最新版本是9.0,而其他常见的Java容器有Resin、WebLogic等。 1.1.1 JDK——Tomcat的好帮手 JDK(Java Development Kit)是Java编程语言的核心组成部分,它包含了运行Java程序所需的JVM(Java Virtual...

Global site tag (gtag.js) - Google Analytics