centos下CPU占用过高怎么办问题要怎么进行调试

与java相关的技术详解
centos中分析java占用大量CPU资源的原因
1,使用top命令,找到java进程的PID,我这里找到的PID为16871。
2,找到该进程后,就要定位具体线程或代码,首先显示线程列表,并按照CPU占用高的线程排序:
ps -mp 16871 -o THREAD,tid,time | sort -rn
显示结果如下:
%CPU PRI SCNT WCHAN
USER SYSTEM
找到了耗时最高的线程9521,占用CPU时间有1个多小时了。
将需要的线程ID转换为16进制格式:
printf "%xn" 9521
最后使用jvm命令打印线程的堆栈信息:
jstack 16871 |grep 2531 -A 30
这样就找到占用java,cpu资源的代码了,接下来还得分析代码执行的原因了。
排查线上tomcat出现cpu100%问题
linux cpu占用100%排查
在VirtualBox中安装CentOS,CPU占用过高,几乎100%的解决办法
关于CentOS 6下Hadoop占用系统态CPU高的处理办法
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
centOs 查看系统cpu使用率等--top
Linux-Tomcat进程CPU使用率100%原因分析
Linux(CentOS) 如何查看当前占用CPU或内存最多的K个进程
关于linux的进程中的各个线程cpu占用情况的分析和查看
Linux(CentOS)网络流量实时监控(iftop)
没有更多推荐了,随笔 - 44&
&&&&&&&&&&&
(1) 系统+软件版本
&&&& CentOS 6.5 (Final), 64 位,内核initramfs-2.6.32-431.5.1.el6.x86_64,
&&&& MATLAB Version: 8.1.0.604 (R2013a)&&&& Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
(2) 问题描述
&&&& 通常在这个环境下,小文件的代码都可以调试通过.
&&&& 最近,把所有函数集合到一个M文件(332.4 kb),只是简单地设置了几个断点, 运行到断点位置再停止运行, cpu和内存占用都还算正常.
&&&& 但接下来对m文件的编辑就开始变得非常慢, 甚至是只添加几个单词就会卡住, 一直没有响应, 内存占用不变, 而1/4核CPU的占用高达100%, 只能从系统监视器里杀死进程.&
&&&& 我猜想, Matlab对M文件大小的支持,是不是非常有限? 子函数版本太多也是罪过,想着集成起来可以方便调用和标注,没想到弄巧成拙了...
(3) 解决办法
找到两个解决办法.
一是使用 '-singleCompThread' 参数启动matlab. 亲测可用. 调试编辑都和原来基本一样, 不再卡顿了. 这要感谢水木网友 @RSVP 的耐心解答.
[usr@usr ~]$ matlab -help
matlab [-h|-help] | [-n | -e]
[-arch | v=variant | v=arch/variant]
[-c licensefile] [-display Xdisplay | -nodisplay]
[-nosplash] [-mwvisual visualid] [-debug] [-softwareopengl]
[-desktop | -nodesktop | -nojvm]
[-r MATLAB_command] [-logfile log]
[-Ddebugger [options]]
- Display arguments.
- Display final environment variables,
arguments, and other diagnostic
information. MATLAB is not run.
- Display ALL the environment variables and
their values to standard output. MATLAB
is not run. If the exit status is not
0 on return then the variables and values
may not be correct.
- Start MATLAB assuming architecture arch.
- Start the version of MATLAB found
in bin/glnxa64/variant instead of bin/glnxa64.
v=arch/variant
- Start the version of MATLAB found
in bin/arch/variant instead of bin/glnxa64.
-c licensefile
- Set location of the license file that MATLAB
should use.
It can have the form port@host or
be a colon separated list of license files.
The LM_LICENSE_FILE and MLM_LICENSE_FILE
environment variables will be ignored.
-display Xdisplay
- Send X commands to X server display, Xdisplay.
-nodisplay
- Do not display any X commands. The MATLAB
desktop will not be started. However, unless
-nojvm is also provided the Java virtual machine
will be started.
- Do not display the splash screen during startup.
-mwvisual visualid
- The default X visual to use for figure windows.
- Provide debugging information especially for X
based problems.
- Allow the MATLAB desktop to be started by a
process without a controlling terminal. This is
usually a required command line argument when
attempting to start MATLAB from a window manager
menu or desktop icon.
-nodesktop
- Do not start the MATLAB desktop. Use the current
terminal for commands. The Java virtual machine
will be started.
-singleCompThread
- Limit MATLAB to a single computational thread.
By default, MATLAB makes use of the multithreading
capabilities of the computer on which it is running.
- Shut off all Java support by not starting the
Java virtual machine. In particular the MATLAB
desktop will not be started.
-jdb [port]
- Enable remote Java debugging on port (default 4444)
-r MATLAB_command
- Start MATLAB and execute the MATLAB_command.
-logfile log
- Make a copy of any output to the command window
in file log. This includes all crash reports.
-Ddebugger [options] - Start debugger to debug MATLAB.
-nouserjavapath
- Ignore custom javaclasspath.txt and javalibrarypath.txt files.
二是使用外部编辑器 Emacs 来编辑和调试. 调试采用 matlab-shell mode, 稍微复杂一些, 传统的快捷键都不怎么能用, 只能用命令设置断点和运行, 涉及到的命令有: dbstop & dbstatus & dbcont & dbquit 等, 可参阅这篇博客. 在调试过程中编辑脚本也没问题, matlab 占用也小. 有关 Emacs 多窗口之间切换的快捷键可以参考 .
阅读(...) 评论()博客分类:
在日常开发中,会碰到java版本的CPU很高,大部分时候会耗尽CPU资源,作者就碰到好几次,这里贴一下我的问题发现的过程。
作者第一次碰到是在linux系统下,代码进行过重构以后,每次运行,JAVA总是会耗尽CPU。linux系统为64位版本centos系统。
解决方法:
1、找到具体是哪个JAVA进程耗费的CPU资源,然后再定位到是进程中的哪些线程耗费CPU
这个可以使用linux下的命令 top,按照CPU资源进行排序,找到对应的进程PID。
使用JAVA jps命令找到该ID对应的java进程,知道是哪个JAVA进程耗费的CPU。
2、打印该JAVA进程的线程队列
使用jstack命令打印当前进程的线程堆栈调用信息
3、使用它top带 H 命令按照线程占用CPU情况进行展示,记录CPU很高的线程PID
根据步骤2打印的jstack线程堆栈的调用信息,如下图:
将记录的高CPU的线程ID与线程堆栈信息的nid进程比较,找到具体是哪个线程耗费的CPU,并最终定位到具体是哪块代码耗费的CPU,jstack命令产生线程堆栈信息的nid为16进制
windows环境下则较为复杂,是因为windows环境下没有类top命令,需要软件进程支持,读者可以下载windows自己的process explorer软件来查看具体是哪个线程耗费CPU。
如下图所示:
左边是进程列表,双击以后就可以对查看该进程的详细信息如下图:
剩下的步骤跟linux下相同
下载次数: 0
浏览: 28575 次
来自: 北京
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'专注于流媒体技术和机器学习
CPU占用率过高,如何调试
1、首先肯定是CPU不应该占用这么高
2、有可能是由于无线循环到时的,for或者while,
有可能是内存拷贝导致的
3、Sleep或者waitfor的区别
4、利用ProcessExpolre.exe 确定该进程下的线程占用CPU情况,如果是某一个线程导致的,kill该线程是不是应该主要功能,如果不影响,然后再具体确定是哪个线程
降低 CPU 占用率的方法
directshow使用自定义的filter(多输入,单输出)出现cpu使用率过高的问题,filter的丢帧处理
占用cpu高的调试方法
Linux Cpu占用高调试方法
没有更多推荐了,如何使LINUX机器CPU使用率为100%的办法。
[问题点数:80分,结帖人ghosteryly]
本版专家分:0
结帖率 97.4%
CSDN今日推荐
本版专家分:14960
2008年10月 Linux/Unix社区大版内专家分月排行榜第二2008年9月 Linux/Unix社区大版内专家分月排行榜第二2008年8月 Linux/Unix社区大版内专家分月排行榜第二
2008年11月 Linux/Unix社区大版内专家分月排行榜第三
本版专家分:3245
本版专家分:2838
本版专家分:99
本版专家分:2440
本版专家分:2464
本版专家分:15
本版专家分:0
本版专家分:10
本版专家分:2440
本版专家分:56
本版专家分:0
本版专家分:6264
本版专家分:1591
本版专家分:5906
本版专家分:77
2008年4月 扩充话题大版内专家分月排行榜第二
本版专家分:751
本版专家分:0
本版专家分:572
本版专家分:5495
本版专家分:0
本版专家分:18
本版专家分:0
本版专家分:5495
本版专家分:281
本版专家分:6496
2007年1月 Linux/Unix社区大版内专家分月排行榜第二
本版专家分:30
本版专家分:180
本版专家分:280
2006年9月 Oracle大版内专家分月排行榜第一
2007年1月 Oracle大版内专家分月排行榜第二2006年10月 Oracle大版内专家分月排行榜第二
本版专家分:0
本版专家分:485
本版专家分:458
本版专家分:458
本版专家分:0
本版专家分:0
本版专家分:45
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:622
本版专家分:0
本版专家分:3137
本版专家分:0
本版专家分:0
本版专家分:369
2010年2月 总版技术专家分月排行榜第三
2012年7月 荣获微软MVP称号
2010年2月 MS-SQL Server大版内专家分月排行榜第一2009年5月 MS-SQL Server大版内专家分月排行榜第一
2012年6月 MS-SQL Server大版内专家分月排行榜第二2010年8月 MS-SQL Server大版内专家分月排行榜第二
本版专家分:196
本版专家分:196
本版专家分:15
本版专家分:102
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐

我要回帖

更多关于 cpu占用过高怎么办 的文章

 

随机推荐