对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍

对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍

ID:21759398

大小:81.50 KB

页数:11页

时间:2018-10-24

对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍_第1页
对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍_第2页
对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍_第3页
对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍_第4页
对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍_第5页
资源描述:

《对于linux类主机java应用程序占用cpu、内存过高的分析方法介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、对于LINUX类主机JAVA应用程序占用CPU、内存过高的分析方法介绍对于LINUX类主机JAVA应用程序占用CPU、内存过高的分析方法介绍作者:丁启良,新炬网络技术专家做为一个IT运维人员,通常在运维过程中会遇到各种各样的问题,系统问题、应用问题、程序问题,而在这当中必然会涉及到性能问题,当用户量过大,或者服务器性能不足以支持大用户量,但同时又得不到扩容的情况下,进行性能分析,并对系统、应用、程序进行优化则显得尤为重要,同时也是节省资源的一种必不可少的手段,目前大多数的运维产品都是基于JAVA语言开发的,下面我给大家介绍一下在linux环境下对JAVA的性能分析手段

2、。1.应用程序占用资源高问题0前大部分应用程序采用的是MVA语言开发,在产品上线使用一段时间后,经常会岀现某个jAVA程序占用的CPU,内存过高,而且几乎从不释放,导致系统卡顿,用户使用变慢,如果要恢复,则必须杀掉该进程或重启该服务,然后进行此操作时,必定会导致业务中断。程序主要由代码组成,优化则需要知道是哪段代码占用资源,并且一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环,所以通过优化代码来降低应用程序的资源消耗或者在应用的使用过程中减少死循环则必不可少。下面我们以4A平台的字符网关服务器为例来进行相应分析。1.问题分析2.1.CPU

3、过高分析D使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低,说明CPU占用率越高。2)初步分析可以发现其中主要占用CPU的进程为java子进程jerrySsh服务(用户访问资源使用的监听服务),在用户量不大的情况下,CPU消耗资源很大。根据研发反馈字符网关设定的最大访问量可达到500/台,冃前字符网关的资源使用现状无法满足设定的要求。?分析手段目前针对Linux下java进程占用CPU高的分析手段主要为使用

4、linux命令查出高CPU使用的进程,前分析其是由于进程原因还是系统原因,在分析出为进程消耗过高CPU后列出占用CPU高和占用时间最长的线程并使用jdk自带的jstack工具进行分析CPU使用分析exportJAVA_HOME=/usr/apps/java/jdkl.6.0_20/1exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar分析过程:1、根据top命令,发现PID为13033的Java进程占用CPU%id50%以上,占用C

5、PU过高2、找到该进程后,首先显示线程列表,并按照CPU占用高的线程排序:[root@YZ-A-ZFWG-4ps-mp13033-oTHREAD,tid,time

6、sort-rn显示结果如下:找到了耗时最高的线程28358,占用CPU时间达8分多钟将需要的线程ID转换为16进制格式:[root@YZ-A-ZFWG-4printf"%x"283586ec6最后打印线程的堆桟信息:2经比对发现占用CPU高的jerrySsh服务中高消耗CPU的代码均为一些等待和读取的语句。内核时间占用最长的线程所使用的代码抓取3"Connectthread10.252.22.5sess

7、ion"prio=10tid=0x00002aab3821c000nid=0x6ec2runnable[0x000000004ala6000]java.lang.Thread.State:RUNNABLEatjava.net.SocketlnputStream.socketReadO(NativeMethod)atjava.net.SocketlnputStream.read(SocketlnputStream.java:129)atcom.jcraft.jsch.lO.getByte(IO.java:82)atcom.jcraft.jsch.Session.read

8、(Session.java:869)atcom.jcraft.jsch.Session.run(Session.java:1345)atjava.lang.Thread.run(Thread.java:619)2.2.内存使用分析冃前字符网关内存使用趋于平衡,除偶尔出现close_wait连接后由于未能得到及时释放而占用了大量内存导致buffers/cache较小外,其他线条暂未出现问题,据研发反馈己经做过优化,但是从目前观察来看coles_wait连接释放时间稍长。并且由于buffers、cached释放不出来,导致系统剩余物理内存较小,可能会影响

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。