工具运行过程中,CPU占用过高的分析定位
之前使用Java Swing开发了一款设备档案收集工具。支持多台设备同时收集,每个设备使用一个线程。在同时收集多台设备信息时,发现CPU占用率居然达到了97%,而且高居不下。显然这样的性能是令人无法忍受的。
我们知道,通过jdk自带的工具jvisualvm可以查看每个线程的执行情况,但就是无法分析每个线程的CPU占用情况。由于工具是运行在Windows系统上的,所以也没办法像Linux下面那样通过命令去分析线程的CPU占用。而微软的process explorer工具可以解决这一难题。通过这个强大的分析工具,终于找到了CPU占用达到近20%的线程。结合jvisualvm中的线程信息,找到了这个线程就是SessionMonitor,用于监控每个SSH连接的状况。也就是说每个收集线程都对应一个SSH连接,也就对应一个SessionMonitor线程。所以正是由于多个SessionMonitor的存在,导致了CPU占用很高。
这个时候,需要单独分析为什么SessionMonitor的CPU占用过高。找到相应的源码,发现SessionMonitor中存在一个循环,循环里面不断的去占用和释放IO资源。最要命的是,这个循环是非常暴力的,没有使用sleep进行“睡一段时间”,所以CPU占用过高也是可以理解了。在这个循环中加上睡眠后,性能得到了明显提升,从97%降到了30%以内。
工具运行过程中,CPU占用过高的分析定位的更多相关文章
- 记一次用arthas排查jvm中CPU占用过高问题
记一次使用arthas排查jvm中CPU占用过高问题.这工具屌爆了 碾压我目前使用的全部JVM工具. 安装 小试 curl -O https://arthas.aliyun.com/arthas-bo ...
- sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚 ...
- 分析java程序中cpu占用过高的线程
http://blog.csdn.net/jgwei/article/details/12079147 http://hllvm.group.iteye.com/group/topic/38893 h ...
- kswapd0 进程CPU占用过高
前几天遇到的一个问题,自己本地用VM配置的虚拟机,一般会top查看进程以及CPU占用的一些情况.又一次用laravel 打印对象,里面的内容比较多,浏览器当时就卡了. 然后看进程的情况.我以为会是ng ...
- Linux kswapd0 进程CPU占用过高
图便宜买了个1核1G虚拟机,启动两个jar后cpu飙升直接卡死,查看cpu及内存占用 发现kswapd0进程cpu占用一直居高不下,于是查询资料,总结如下. swap分区的作用是当物理内存不足时,会将 ...
- 【笔记】排查CPU占用过高
本文是该教程视频的笔记 https://www.bilibili.com/video/BV15T4y1y7eH 1. 问题演示 将演示项目打包放到服务器运行 执行 curl http://localh ...
- 性能测试问题_Mysql数据库服务器的CPU占用很高
MySQl服务器CPU占用很高 1. 问题描述 一个简单的接口,根据传入的号段查询号码归属地,运行性能测试脚本,20个并发mysql的CPU就很高,监控发现只有一个select语句,且表建立了索引 ...
- java 一次CPU占用过高问题的排查及解决
最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID ...
- 一次单核CPU占用过高问题的处理
客户现场反馈,top的检查结果中,一个CPU的占用一直是100%.实际上现场有4个CPU,而且这个服务器是mysql专属服务器. 我的第一反应是io_thread一类的参数设置有问题,检查以后发现re ...
随机推荐
- Mac安装软件时 提示已损坏的解决方法
进入终端: sudo spctl --master-disable
- linux 不解压日志压缩包直接搜索里面的内容
- hdu2087kmp
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花布条和 ...
- JS冒泡排序的6种写法(武当雄风)
天下英雄出我辈,一入江湖岁月催.鸿图霸业谈笑间,不胜人生一场醉. 武当山上,一年一度的试道大会又开始了... 众武当弟子摩拳擦掌都想在此次试道大会上一展风采... 张三丰临终前曾留下一句话:试道大会采 ...
- dubbo监控中心搭建
从网上下载了一个dubbo监控中心,地址忘了,文件名是dubbo-monitor-simple-2.5.3-assembly.tar.gz. 修改监控中心配置文件如下: dubbo.container ...
- java微信授权登录传参给redirect_uri 接口,回到原页面,传递多个参数
本文背景: 调用微信的授权登录的时候,我们第一步是需要获取用户同意授权的code,这里面有一个redirect_uri参数,当用户同意授权之后,就会回调访问这个redirect_uri,通常这redi ...
- CAS 服务端数据库认证
CAS-服务端数据库认证 数据认证需要相关的jar包: cas-server-support-jdbc-x.x.x.jar MySQL-connector-Java-x.x.x-bin.jar 修改C ...
- SQL中游标的使用(转)
http://www.cnblogs.com/tianguook/archive/2011/03/09/1977987.html 一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言, ...
- Android SharedPreferences一般的读写 的用法。
Android SharedPreferences一般用于轻量级的数据存储,比如用户名和密码等. package com.lixu.testsharepreferences; import andro ...
- Django(五)在模板中使用静态文件
location 最后一个文件夹名就是project名,我用了Django_Plan. Application 是自动加入的APP名字,我用了Plan 静态文件相关配置: Django_Plan\se ...