发表于: 2017-10-26 19:26:19

1 646


今天完成的事情:



1 补上deploy.sh



find /home/tomcat8/webapps/ -maxdepth 1 -name *.war 

/home/tomcat8/webapps/中查找名称后缀为war的文件,maxdepth指定递归深度为1,即只查找webapps当前目录下的文件,不深入子文件夹。

再拼接|xargs rm -rf 删除之


2 统计访问DB时间,Controller处理时间

统计时间:统计每个方法开始和结束的时间差。也就是每个方法里面都要包含这个统计方法。

这里要用到AOP来处理这个重复劳动,也避免乱入到业务逻辑里。

!不改动其他代码,只增加了一个类就完成了统计DB访问时间的功能!这个就是增强的内涵吧。


("execution(* org.shunly.application.controller.*(..))")

第一个*表示匹配任意的方法返回值,..(两个点)表示零个或多个,上面的第一个..表示service包及其子包,第二个*表示所有类,第三个*表示所有方法,第二个..表示方法的任意参数个数


@Component
@Aspect
public class LogTime {
   public static Logger logger = LogManager.getLogger(LogTime.class);

   //定义切点,用于复用
   @Pointcut("execution(* org.shunly.application.controller..*.*(..))")
   public void pointCut(){

   }

   //环绕式增强,复用切点,必须引入参数ProceedingJoinPoint
   @Around("pointCut()")
   public Object around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
       //记录切点前时间
       long start = System.currentTimeMillis();
       logger = LogManager.getLogger(proceedingJoinPoint.getTarget().getClass());
       //让切点动起来
       Object object = proceedingJoinPoint.proceed();
       //记录切点完成后的时间
       long end = System.currentTimeMillis();
       //把消耗的时间写入日志
       logger.info("耗时" + (end - start) + "ms");
       //返回切点对象
       return object;
   }
}

脚本:

结果:


3 Top

进入top页面

使用权限:所有使用者

使用方式:top [-] [d delay] [q][c] [S] [s] [i] [n] [b]

说明:即时显示process的动态

d :改变显示的更新速度,或是在交谈式指令列( interactive command)按s

q :没有任何延迟的显示速度,如果使用者是有superuser的权限,则top将会以最高的优先序执行

c :切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S :累积模式,会将己完成或消失的子行程( dead child process )的CPU time累积起来

s :安全模式,将交谈式指令取消,避免潜在的危机

i :不显示任何闲置(idle)或无用(zombie)的行程

n :更新的次数,完成后将会退出top

b :批次档模式,搭配"n"参数一起使用,可以用来将top的结果输出到档案内


另外:

监控java线程数:

ps -eLf | grep java | wc -l

监控网络客户连接数:

netstat -n | grep tcp | grep 侦听端口 | wc -l



明天计划的事情:

任务三总结+任务四开启


遇到的问题:

mvn install命令行打包报错:

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

然后clean以后使用idea的Build Artifacts倒是成功了。。。


收获:

首次接触了AOP切面的实际操作,初步了解注解AOP的使用方式,spring-web.xml开启注解  <aop:aspectj-autoproxy/>,新增一个类来实现AOP,@Around注解方法,使之成为环绕增强,控制切入点的前后。

熟悉lunix的各种命令,tail和awk的联合使用等。




返回列表 返回列表
评论

    分享到