JVM性能调优
来源:互联网 发布:小个子穿衣购买软件 编辑:程序博客网 时间:2024/05/02 00:20
转载自:
http://yhjhappy234.blog.163.com/blog/static/3163283220122298232721/?suggestedreading&wumii
在上文中我们分析了很多性能监控工具,介绍这些工具的目的只有一个,那就是找出对应的性能瓶颈。盲目的性能调优是没有效果的,只有充分知道了哪里出了问题,针对性的结果才是立竿见影的。解决了主要的性能问题,那些次要的性能问题也就不足为虑了!
我们知道,性能问题无非就这么几种:CPU、内存、磁盘IO、网络。那我们来逐一介绍以下相关的现象和一些可能出现的问题。
一、CPU过高。
查看CPU最简单的我们使用任务管理器查看,如下图所示,windows下使用任务管理器查看,Linux下使用top查看。
一般我们的服务器都采用Linux,因此我们重点关注一下Linux(注:windows模式下相信大家已经很熟悉了,并且前面我们已经提到,使用资源监视器可以很清楚的看到系统的各项参数,在这里我就不多做介绍了)
在top视图下,对于多核的CPU,显示的CPU资源有可能超过100%,因为这里显示的是所有CPU占用百分百的总和,如果你需要看单个CPU的占用情况,直接按键1就可以看到。如下图所示,我的一台测试机为8核16GB内存。
在
top视图下,按键shift+h后,会显示各个线程的CPU资源消耗情况,如下图所示:我们也可以通过
sysstat工具集的pidstat来查看注:sysstat下载地址:http://sebastien.godard.pagesperso-orange.fr/download.html
安装方法:
1、chmod +x configure
2、./configure
3、make
4、make install
如输入pidstat 1 2就会隔一秒在控制台输出一次当然CPU的情况,共输出2次
除了
top、pidstat以外,vmstat也可以进行采样分析相关
top、pidstat、mstat的用法大家可以去网上查找。下面我们主要来介绍以下当出现CPU过高的时候,或者CPU不正常的时候,我们该如何去处理?
CPU消耗过高主要分为用户进程占用CPU过高和内核进程占用CPU过高(在Linux下top视图下us指的是用户进程,而sy是指内核进程),我们来看一个案例:
程序运行前,系统运行平稳,其中蓝色的线表示总的
CPU利用率,而红色的线条表示内核使用率。部署war测试程序,运行如下图所示:对于一个
web程序,还没有任何请求就占用这么多CPU资源,显然是不正常的。并且我们看到,不是系统内核占用的大量CPU,而是系统进程,那是哪一个进程的呢?我们来看一下。很明显是我们的
java进程,那是那个地方导致的呢?这就需要用到我们之前提到的性能监控工具。在此我们使用可视化监控工具VisualVM。首先我们排除了是
GC过于频繁而导致大CPU过高,因为很明显监控视图上没有GC的活动。然后我们打开profilter去查看以下,是那个线程导致了CPU的过高?前面一些线程都是容器使用的,而下面一个线程也一直在执行,那是什么地方调用的呢?查找代码中使用
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- JVM性能调优
- jvm性能调优
- JVM性能调优
- jvm性能调优
- jvm性能调优
- JVM性能调优
- JVM 性能调优
- JVM性能调优
- JVM性能调优
- jvm性能调优
- vtkOBBTree之ComputeOBB参数问题
- C#62课的主要内容
- 清楚浏览器缓存给link标签加版本方法
- code
- unity获取本机的IP地址
- JVM性能调优
- MySQL使用规范
- poj_3122 Pie(二分)
- hdoj-【1465 不容易系列之一】
- PCB各层含义
- HDU2103 Family planning
- 错误Conflict with dependency 'com.google.code.findbugs:jsr305' 解决方法
- 360真不靠谱,云盘不靠谱 字体不靠谱 安全卫士不靠谱
- 关于计算机视觉(随谈)