zoukankan      html  css  js  c++  java
  • MyEclipse性能调优初体验

    MyEclipse性能调优初体验

    简介一下工作环境,MyEclipse2014,你懂的

    项目中有一个基于web的工作流引擎,仅仅要执行起来就CPU差点儿耗尽(尽管看似27%,事实上已经把俺4核的CPU当中一个核给全然占光了)


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

    项目根文件夹上右键

    在MyEclipse Server Application的项目下新建一个配置

    main的tab页中能够看到prject和server的选择,我这里仅仅有一个tomcat7支持的web项目


    点击右下角的 Profilebutton。

    则会在tomcat中启动自己的web项目而且自己主动启动性能工具进行监视。笔者这里自己主动启动的是visualVM 1.3.6,您自己安装的版本号可能会不太一样

    工具启动之后。就能够看到关于是CPU监视还是内存监视的部分了。

    我这里项目因为是CPU占用的问题。所以选择CPU


    在监视界面上能够看到下面的热点方法

    除开系统的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%的理论值,这才是一个服务应该具有的气质嘛。哈哈



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

  • 相关阅读:
    # GIT团队实战博客
    # ML学习小笔记—Where does the error come from?
    # Alpha冲刺3
    # Alpha冲刺2
    # Alpha冲刺1
    # ML学习小笔记—Linear Regression
    # 需求分析报告
    # 团队UML设计
    # 团队选题报告
    Alpha 冲刺 (4/10)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5142455.html
Copyright © 2011-2022 走看看