求助,为什么我cpu使用率高怎么办一直维持在15%左右

为什么tomcat占用cpu这么高,请帮忙分析
有这样一台web服务器,上边安装着nginx(做反向代理),另外安装了一个tomcat7.0.23,jdk1.7
该tomcat上运行了一个webapp,主要提供了两个服务,一个是短信,另一个是定时器,定时获取邮件表中未发送的邮件,每分钟检查一次
该webapp部署在别的服务器上,cpu,内存工作都正常,唯独部署在这台服务器上,cpu高的吓人;
下图是我用visualVM抓的图,请帮忙分析一下
把问题服务器上的环境原封不动的复制到另外一台机器上,工作十分正常
另外,该服务2个月前已经稳定运行了1年半,tomcat都没重启过,就是最近突然出现这个问题,cpu 接近100%
起初考虑是否该tomcat的某个端口收到了攻击,我将tomcat的端口折腾了一边,问题依旧
请大家帮忙分析一下
我以前经常碰到这种问题,一般我会做一个简单的jsp页面,列举虚拟机中所有的线程(显示线程名称、对应类名以及运行状态),然后监控看看是否有一些线程是一直处于RUNNABLE状态(除了一些Tomcat自身的服务线程除外)
继续深入来看的话,在接收到请求的时候把当前线程名和对应的URL地址打印出来。
二者结合来看,就能看到是用户在访问哪个URL而导致的线程一直在运行。
--- 共有 1 条评论 ---
感谢您的提示,为我解决此问题节省了很大的时间;
下面是我用来列举所有线程的jsp页面:
&title&Threads in ldcstudy.com&/title&
body {font-size:8}
ol {line-height:18}
&strong&java.io.tmpdir:&/strong&
&li&&%=System.getProperty(&java.io.tmpdir&)%&&/li&
&strong&Memory:&/strong&
&li&freeMemory=&%=Runtime.getRuntime().freeMemory()/()%&M&/li&
&li&totalMemory=&%=Runtime.getRuntime().totalMemory()/()%&M&/li&
&li&maxMemory=&%=Runtime.getRuntime().maxMemory()/()%&M&/li&
&strong&Thread:&/strong&
&%for(Thread t : list_threads()){%&
&li&&%=t.getName()%&(&b&&%=t.getState()%&&/b&) : &%=t.getClass().getName()%&&/li&
public static java.util.List&Thread& list_threads(){
int tc = Thread.activeCount();
Thread[] ts = new Thread[tc];
Thread.enumerate(ts);
return java.util.Arrays.asList(ts);
--- 共有 3 条评论 ---
请教,怎么打印出线程对应的URL?
谢谢分享,学习了
试了一下,这个好用!
我还碰到的导致CPU 100%的原因,是程序某个地方存在死循环,这个死循环在某种条件下存在,因此通过上面的方法可能找出来
--- 共有 1 条评论 ---
堆内存那有时会很高是啥原因导致的?
既然可以用visualVM,使用thread dump也可以实现查看当前线程
感谢大家的回复
我现在折腾一下,待解决后,给出结论,谢谢大家
红薯老大 搞java很多年啊,功力深厚。
学习了,借鉴下
解决过程如下:
通过visualVM监视活动进程,发现有很多ip:8881 reciver线程在活动,有上百条之多
此时关闭tomcat,然后重启
发现ip:8881 reciver线程陆续增长
通过查询ip获知,该ip是联通短信网关的服务地址
突然恍然大悟,是不是开发人员在调用完短信网关后未关闭连接
此时让测试人员向我的手机发送一个短信发现,发送一条,活动线程增加一条
然后找到其代码发现,确实是连接没有关闭
果断加上try finally之后,该线程消失,cpu利用率恢复到正常水平
--- 共有 2 条评论 ---
: 之所以在其他服务器上没有问题,是因为在其他服务器上并没有测试群发短信的用例,只发1,2条短信的话是发现不了资源未关闭导致的线程只增不减的问题
既然是这个原因,为什么在其他服务器上没问题?
这就算是资源泄漏吧。
700多个线程,真不少
--- 共有 2 条评论 ---
你没用线程池吗?或者,你的线程需要一直存活着?
发一条短信,新建一个线程,你算算。我的电脑CPU使用率一般都在15%一下,内存也只用了1/5左右,为什么还越来越慢,开个机要1分多钟,为什么?_百度知道
我的电脑CPU使用率一般都在15%一下,内存也只用了1/5左右,为什么还越来越慢,开个机要1分多钟,为什么?
还有打开浏览器、软件什么的也很慢,杀毒也没杀出什么来为什么?
我有更好的答案
看看你机器的配置是不是存在问题做一下系统优化。有优化大师就可以。按照我说的弄下吧。不行的话。再研究。可能你的磁盘碎片太多。造成硬盘读取速度变慢。还有一样是做下磁盘整理。硬件似乎没什么问题。那么最大的可能就是系统臃肿。还需要坐下系统清理。影响极其速度。从你说的情况来看
采纳率:30%
来自团队:
启动项太多了,关闭一些,清理一下垃圾
硬盘不够快,换个快的35秒卓有
启动速度和主板,BIOS,操作系统都用关,最好一项一项排查。开软件慢也有多种情况,如果总是很慢的话,那就要看是不是你操作系统的问题了。
其他1条回答
为您推荐:
其他类似问题
电脑cpu的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。CPU经常出现使用率100%解决方法_网易科技
CPU经常出现使用率100%解决方法
用微信扫码二维码
分享至好友和朋友圈
我们在使用WindowsXP操作系统的时候,用着用着系统就变慢了,一看“任务管理器”才发现CPU占用达到100%。这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在本文中笔者将从硬件,软件和病毒三个方面来讲解系统资源占用率为什么会达到100%。
经常出现CPU占用100%的情况,主要问题可能发生在下面的某些方面:
CPU占用率高的九种可能
1、防杀毒软件造成故障
由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,或者,升级你的硬件配备。
2、驱动没有经过认证,造成CPU资源占用100%
大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。
3、病毒、木马造成
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
4、控制面板—管理工具—服务—RISINGREALTIMEMONITORSERVICE点鼠标右键,改为手动。
5、开始-&运行-&msconfig-&启动,关闭不必要的启动项,重启。
6、查看“svchost”进程。
svchost.exe是WindowsXP系统的一个核心进程。svchost.exe不单单只出现在WindowsXP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows2000中svchost.exe进程的数目为2个,而在WindowsXP中svchost.exe进程的数目就上升到了4个及4个以上。
7、查看网络连接。主要是网卡。
8、查看网络连接
当安装了WindowsXP的计算机做服务器的时候,收到端口445上的连接请求时,它将分配内存和少量地调配CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的MaxWorkItems设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太多系统资源。
要解决此问题,我们可以通过修改注册表来解决:在注册表编辑器中依次展开[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\lanmanserver]分支,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。然后双击该值,在打开的窗口中键入下列数值并保存退出:
如果计算机有512MB以上的内存,键入“1024”;如果计算机内存小于512MB,键入“256”。
9、看看是不是WindowsXP使用鼠标右键引起CPU占用100%
前不久的报到说在资源管理器里面使用鼠标右键会导致CPU资源100%占用,我们来看看是怎么回事?
本文来源:论坛
责任编辑:王晓易_NE0011
用微信扫码二维码
分享至好友和朋友圈
加载更多新闻
热门产品:   
:        
:         
热门影院:
阅读下一篇
用微信扫描二维码
分享至好友和朋友圈如何使LINUX机器CPU使用率为100%的办法。
[问题点数:80分,结帖人ghosteryly]
如何使LINUX机器CPU使用率为100%的办法。
[问题点数:80分,结帖人ghosteryly]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年11月 Linux/Unix社区大版内专家分月排行榜第三
2007年1月 Oracle大版内专家分月排行榜第二2006年10月 Oracle大版内专家分月排行榜第二
2012年7月 荣获微软MVP称号
2010年2月 MS-SQL Server大版内专家分月排行榜第一2009年5月 MS-SQL Server大版内专家分月排行榜第一
匿名用户不能发表回复!|  导读:完美解决5开多开梦幻占cpu以及掉线问题,几步教你如何让你5开梦幻西游流畅运行……
  相关推荐&&&
  首先给大家看看我的配置。
  主流配置哦。 玩梦幻是毫无压力,可是问题来了。玩了2个多月,发现玩梦幻各种卡,超吃CPU。还经常出现掉线,不是网络错误的那种。 今天无意中发现一个方法解决了各种卡,现在超流畅哦。
提示:支持键盘“← →”键翻页}

我要回帖

更多关于 gpu使用率一直是0 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信