码迷,mamicode.com
首页 > 系统相关 > 详细

MyEclipse性能调优初体验

时间:2014-10-13 19:25:37      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:myeclipse   java   

MyEclipse性能调优初体验

简单介绍一下工作环境,MyEclipse2014,你懂的
bubuko.com,布布扣
bubuko.com,布布扣
项目中有一个基于web的工作流引擎,只要运行起来就CPU几乎耗尽(虽然看似27%,其实已经把俺4核的CPU其中一个核给完全占光了)
bubuko.com,布布扣
bubuko.com,布布扣

启动性能分析的简要方法:

项目根目录上右键
bubuko.com,布布扣bubuko.com,布布扣

在MyEclipse Server Application的项目下新建一个配置
bubuko.com,布布扣
bubuko.com,布布扣
main的tab页中可以看到prject和server的选择,我这里只有一个tomcat7支持的web项目
bubuko.com,布布扣

点击右下角的 Profile按钮。

则会在tomcat中启动自己的web项目并且自动启动性能工具进行监视。笔者这里自动启动的是visualVM 1.3.6,您自己安装的版本可能会不太一样
bubuko.com,布布扣
bubuko.com,布布扣
工具启动之后,就可以看到关于是CPU监视还是内存监视的部分了。我这里项目由于是CPU占用的问题,所以选择CPU

在监视界面上可以看到以下的热点方法
bubuko.com,布布扣
除开系统的API类的方法(它们通常是被业务方法调用多次导致消耗CPU的),找到了ExecutorEngine.execute()方法是罪魁祸首
好了,直奔这个方法,发现里面只有一个轮询的代码段
  while(true){
   // 获取队列中的一条事件
   EventInfo eventInfo = eventMangeCenter.takeEvent();
   if(eventInfo != null){
    // 首先将事件插入数据库
    insertHistoryEvent(eventInfo);
    // 执行按事件类型注册的监听器的处理程序
    executeProcessByEventType(eventInfo);
    // 执行按事件编码注册的监听器的处理程序
    executeProcessByEventCode(eventInfo);
    // 执行按事件类型和事件编码注册的监听器的处理程序
    executeProcess(eventInfo);
       }    
  }
而eventMangeCenter.takeEvent();方法如下
  */
 public EventInfo takeEvent(){
  EventInfo info = null;
  if(queueEventInfo.peek() != null){
   // 取出第一条,并且删除
   info = queueEventInfo.poll();
  }
  return info;
 }
继续深入,takeevent并没有完成它应该具有的功能:阻塞
 public EventInfo takeEvent(){
  EventInfo info = null;
  if(queueEventInfo.peek() != null){
   // 取出第一条,并且删除
   info = queueEventInfo.poll();
  }
  return info;
 }

至此,问题原因找到了,然后将定义为 private Queue<EventInfo> queueEventInfo 修改为private BlockingQueue<EventInfo> queueEventInfo; 利用java本身的BlockingQueue来实现轮训的时候,有数据才开始动,没数据就等着

public EventInfo takeEvent() throws InterruptedException {
  return queueEventInfo.take();
}

再次启动tomcat server的项目,CPU在没有服务里请求的时候,保持0%的理论值,这才是一个服务应该具有的气质嘛,哈哈

bubuko.com,布布扣
bubuko.com,布布扣

到这里告一段落吧,深入的东西下次再说

MyEclipse性能调优初体验

标签:myeclipse   java   

原文地址:http://blog.csdn.net/watcher/article/details/40048309

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!