本身是名Java开发,在做了一段大数据的工作后,猛然间想对Java做个总结。

从未写过技术博客,一时不知如何开始,思虑后,暂且以自己喜爱的方式来开篇。

工作中遇到过CPU或内存过高的问题,解决步骤:

  1. 通过top命令查看,得到pid.
  2. 通过ps -mp <pid> -o THREAD,tid,time,pid 命令,拿到tid.
  3. 使用jdk自动的工具,jstack -l 15605 > stack.txt,得到此时的线程状态。(Stack文件描述了当时每个线程的状态,这是一个很强大的知识点,后面慢慢细说。)
  4. 将步骤2中得cpu过高的tid,由十进制转换为16进制(如果是windows server也可以通过在线的一些工具进行转换。)
  5. 使用命令grep "3cfb" stack.txt -A30在生成的stack文件中查找,可以看出当前的程序是由于进行GC导致的cpu过高。
  6. JVM内存占满会触发GC(这是个知识点,GC的触发机制,下节在细说),那我们就用jdk自带的工具查看下此时的内存情况。jmap -dump:file=heap.dump,format=b <pid>
  7. 通过jdk自带工具,jhat -JXmx1G heap.dump解析dump文件。(生成的dump文件一般会很大,所以需要大内存的PC去解析。另外,MAT(MemoryAnalyzer Tool)工具是eclipse的一个插件,也可以分析dump文件)

  8. Jhat命令在7000端口自动部署了web,可以通过serverIp:7000访问

这是解决问题的的一个具体方法,这里涉及到了很多知识点,我准备依此为据,将知识点串起来。下次写GC相关的一些东西。
              

一.CPU,Mem过高怎么办 --这是个开始的更多相关文章

  1. Linux下java进程CPU占用率高-分析方法

    今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%  ...

  2. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  3. Linux下CPU占用率高分析方法

    一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用1. 通过top命令找到可疑进程PID top - 09:37:18 up 70 days, 16:29 ...

  4. linux查看某个进程CPU消耗较高的具体线程或程序的方法

      目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号: 通过进程号pid,我们在linux上可以通过top –H –p <pid> ...

  5. kswapd0 进程CPU占用过高

    前几天遇到的一个问题,自己本地用VM配置的虚拟机,一般会top查看进程以及CPU占用的一些情况.又一次用laravel 打印对象,里面的内容比较多,浏览器当时就卡了. 然后看进程的情况.我以为会是ng ...

  6. 服务器cpu负载过高问题排查

    https://blog.csdn.net/MrZhangXL/article/details/77711996 第一步 :执行top命令,查出当前机器线程情况 top - 09:14:36 up 1 ...

  7. MongoDB CPU使用较高,如何排查?

    前言 首先,我们简单梳理一下,CPU 在什么情况下才算负载较高?负载查看是通过"uptime"命令查看.大家都知道,命令显示的结果分别表示1分钟.5分钟.15分钟的负载情况,这点就 ...

  8. linux CPU占用率高(转)

    来自:http://www.cnitblog.com/houcy/archive/2012/11/28/86801.html 1.用top命令查看哪个进程占用CPU高 gateway网关进程14094 ...

  9. (转)Linux下java进程CPU占用率高-分析方法

    Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...

随机推荐

  1. redisLock redis分布式锁

    redis-lock redis setnx cmmand java object condition queue 条件队列 retrycount 带有重试次数限制 object wait time ...

  2. C语言中指针和数组的区别

    看<C专家编程>一书,看到数组与指针并不相同一章,遂做了一段测试: 代码: #include <stdio.h> #include <stdlib.h> int m ...

  3. AngularJS高级程序设计读书笔记 -- 控制器篇

    作用域组成了一个能够用于在控制器之间形成通信的体系结构. 1. 控制器和作用域的基本原理 控制器就像领域模型与视图之间的纽带, 他给视图提供数据与服务, 并且定义了所需的业务逻辑, 从而将用户行为转换 ...

  4. 使用PHP二维码生成类库PHP QR Code生成二维码

    <?php include 'phpqrcode.php'; $value = 'http://www.helloweba.com'; //二维码内容 $errorCorrectionLevel ...

  5. 【Android Developers Training】 97. 序言:访问通讯录数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  6. 如何在新浪sae服务器上面连接redis

    1.创建php空应用 2.选择

  7. Spring源码:IOC原理解析(一)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! IOC(Inversion of Control),即控制反转,意思是将对象的创建和依赖关系交给第三方容器处理,我们要用的时候告诉容器我们 ...

  8. jstack

    简介 jstack用于打印出给定的java进程ID的Java堆栈信息,一般用于检查应用的线程问题,死锁问题 常用命令 jstack 输出 $ jstack 11376 2014-01-21 20:36 ...

  9. Java基础语法<二> 字符串String

    1. 代码点与代码单元 Java字符串由char序列组成.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length()方法将返回采用UTF-16编码表示 ...

  10. Redis Pipeline原理分析

    转载请注明出处:http://www.cnblogs.com/jabnih/ 1. 基本原理 1.1 为什么会出现Pipeline Redis本身是基于Request/Response协议的,正常情况 ...