发表于: 2017-10-24 21:59:08

1 778


今天完成的事情

编写脚本,用来统计nginx的响应时间

需要再nginx.conf配置文件中设置日志的输出格式,不然默认的输出格式中没有响应时间,其配置如下:

其中upstream_response_time 就是响应时间

编写脚本如下:

其基本思路是转到日志文件所在的目录,利用tail命令抽取最近的100条日志,抽取其中的响应时间,并对其进行统计,得到响应时间的分布。利用awk命令可以对日志进行逐行处理,它会将一行按照空格分为各个段,所设置的响应时间在第26段,用$26表示。

执行结果:

在resin的日志中没有找到关于连接DB时间,和controller处理时间的信息,查看大佬们的日报,说是用AOP和log4j来打印相关信息到日志文件中,再对其进行操作。

参考师兄们的日报,编写了切面类:

@Component
@Aspect
public class Cut {
Logger log=Logger.getLogger(Cut.class);

   @Around("execution(* com.jnshu.service.*.*(..))")
public Object stime(ProceedingJoinPoint pj)throws Throwable{
Long begin=new Date().getTime();
       Object o=pj.proceed();
       Long end=new Date().getTime();
       log.info("访问DB花费时间 "+(end-begin)+" 毫秒");
       return o;
   }

@Around("execution(* com.jnshu.controller.*.*(..))")
public Object ctimeget(ProceedingJoinPoint pj)throws Throwable{
Long begin=new Date().getTime();
       Object o=pj.proceed();
       Long end=new Date().getTime();
       log.info("访问controller话费时间 "+(end-begin)+" 毫秒");
       return o;
   }
}

需要再spring MVC中进行配置:

<context:component-scan base-package="com.jnshu.service"/>
<context:component-scan base-package="com.jnshu.controller"/>
<context:component-scan base-package="com.jnshu.util"/>
<aop:aspectj-autoproxy/>

还要再log4j的配置文件中配置输出格式路径,格式:

## 日志文件(logFile)
log4j.appender.R=org.apache.log4j.FileAppender
log4j.appender.R.Append=true
log4j.appender.R.File=/usr/local/resin/resin-4.0.52/log/DBtime.log
#log4j.appender.R.Threshold=INFO
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
log4j.appender.R.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

然后编写统计脚本。

因为输出到日志文件的信息是杂揉在一起的,是一条DB的,一条controller的:

所以需要对其进行筛选,再进行统计。参考了陈昊大佬的代码,在awk命令中对一行进行匹配,只对有规定的字段的那一行进行操作,具体代码如下:

对最近的200条日志进行统计,实际上是分别对100条DB连接时间,和100条controller处理时间进行统计。执行结果如下:

成功实现统计效果。


明天的计划

完成任务三


遇到的问题

在服务器上部署项目在tomcat中,总是启动失败,然后将同样的项目放在resin中启动就能成功,还不清楚原因。

shell命令很不习惯


收获

学习了查看日志并对相关信息进行处理。



返回列表 返回列表
评论

    分享到