发表于: 2017-10-18 20:36:29

1 668


今天完成的任务:

1.写出来nginx响应时间的脚本。

首先说一下自己的思路,就是首先去找一条日志,然后查看一下响应的时间,如下,最后一个是响应时间0.022

183.192.35.5 - - [17/Oct/2017:23:03:08 +0800] "POST /updateStudent HTTP/1.1" 500 17761 "http://hushanxing.net/update?id=17" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3376.400 QQBrowser/9.6.11924.400" "-" "0.022"

然后因为在使用awk命令的时候需要指明这一段时间的位置(比如:$26.所以需要先去找0.022这个数字的位置,可以数空格,每一个空格都隔开了一串字符。另外还可以使用

tail -1 ${LOGPATH} | awk '{print $20}'这个命令先打印一下试试看,看看打印出的是不是需要的,不是再去调整,最后找到第26个是我们需要的。所以可以写成$26.

 

找到了位置以后就可以使用cat命令去查找信息。

cat /usr/java/nginx/logs/access.log | awk 'BEGIN{sum=0} {if($26<0.050) sum++;} END {print sum}' 

/usr/java/nginx/logs/access.log路径下的access.log日志中去抓取第26位,就是响应时间的信息,然后判断是否小于0.05,最后将所有判断为是的信息数目输出。

用这样的方法就可以达到查看响应时间的目的。

下面是完整的脚本。

tail 命令用来筛选出最后100条信息。

#!/bin/bash

LOG_PATH=/usr/java/nginx/logs/access.log

echo nginx响应时间

echo 统计100次的访问

echo 划分时间段

echo 响应时间0.05s以内的次数

tail -100 ${LOG_PATH}|awk 'BEGIN{sum=0}{if($26<0.05)sum++;}END{print sum}'

echo 响应时间0.05--0.1s的次数

tail -100 ${LOG_PATH}|awk 'BEGIN{sum=0}{if(($26>0.05)&&($26<0.1))sum++;}END{print sum}'

echo 响应时间0.1--0.15s的次数

tail -100 ${LOG_PATH}|awk 'BEGIN{sum=0}{if(($26>0.1)&&($26<0.15))sum++;}END{print sum}'

echo 响应时间0.15--0.2s的次数

tail -100 ${LOG_PATH}|awk 'BEGIN{sum=0}{if(($26>0.15)&&($26<0.2))sum++;}END{print sum}'

echo 响应时间0.2s以上的次数

tail -100 ${LOG_PATH}|awk 'BEGIN{sum=0}{if($26>0.2)sum++;}END{print sum}'

结果:

最后还可以在脚本中所有命令的最后面加上>>time.txt

比如:echo 统计100次的访问>>time.txt 表示讲这句话记录在time.txt文件中。

2.编写脚本统计数据库处理时间。

首先需要在代码log4j的部分设置日志输出位置。

然后指定的文件中查看一下是否输出成功了。

最后和上面一样的方法去统计时间和范围。

使用命令定位时间的位置tail -1 ${LOGPATH} | awk '{print $6}'。第六个位置是我们需要的时间。

编写统计的脚本。

#!/bin/bash

#this file is used to account to DB time

#by chenzui

LOGPATH=/usr/java/resin/log/dbtime.log

echo 统计数据库处理时间

echo 统计100条中的分布

echo 时间在10ms以内

tail -100 ${LOGPATH} | awk 'BEGIN{sum=0} {if(($5~/comNaNteng.service.impl.StudentServiceImpl*/) && ($6<10)) sum++;} END {print sum}'

#tail -1 ${LOGPATH} | awk '{print $6}'

echo 时间在10-20ms以内

tail -100 ${LOGPATH} | awk 'BEGIN{sum=0} {if(($5~/comNaNteng.service.impl.StudentServiceImpl*/) && ($6>10)&&($6<20)) sum++;} END {print sum}'

echo 时间在20ms以上

tail -100 ${LOGPATH} | awk 'BEGIN{sum=0} {if(($5~/comNaNteng.service.impl.StudentServiceImpl*/) && ($6>20)) sum++;} END {print sum}'

结果:

3.使用top命令查看进程

top命令用来监视linux的系统状况,比如cpu,内存的使用。

前面的五行是系统统计的整体信息。

后面的表格是系统进程的详细信息。并且5s刷新一次。

详细的每一个字段的含义太多了。可以查看

http://www.linuxidc.com/Linux/2016-08/133871.htm

4.深度思考。

1.nginx服务器有什么作用?什么叫反向代理?为什么要使用反向代理?

nginx是一个反向代理代理服务器,用于获取客户端发送的请求并且获取到需要的信息返回客户端。这样不需要用户直接和web服务器进行访问。

正向代理:是一个位于客户端和web服务器之间的代理,用来获取客户端发送的请求,客户端转交请求再将获取的内容返回给客户端。代理的是客户端,为客户端收发请求,服务端不知道实际请求端。

反向代理:代理的是服务端,客户端不知道实际请求的服务端。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

反向代理的好处是:

1.单次请求会更快,在高并发的情况下会比其他服务器相应更快。

2可靠性高。由于支持负载均衡,所以在访问量很大的时候会均匀分发给各个不同的服务器。但是会占用比较低的内存资源。解决了服务器过载的情况。

3.扩展性,跨平台。

4.支持热部署,不需要停止服务器再去更新。

 

2.什么是ssh?如何在linux服务器上从网站下载文件?

ssh secure shell 缩写,SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。使用ssh可以加密传输的数据,这样可以防止中间人攻击。

linux上从网站下载可以使用wget命令

一般的使用方法是: wget + 空格 + 参数 + 要下载文件的url路径,例如

wget http://www.linuxsense.org/xxxx/xxx.tar.gz

wget还有一些常用的参数。

-b:后台下载,Wget默认的是把文件下载到当前目录。

-O:将文件下载到指定的目录中。

-P:保存文件之前先创建指定名称的目录。

-t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。

-c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。

-r:使用递归下载

 

3.如何写shell脚本?尝试自己编写一个简单脚本。

首先需要知道shell脚本是什么:Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

编写shell脚本 就很简单了,文件头必须是#/bin/bash  然后把需要执行的命令全部都罗列出来就行。

4.tomcatjettyresin各容器有什么区别?如何优化这些容器配置?

这三种容器都是用作web容器,但是jettyresintomcat启动的速度要快一些。tomcat支持的方法多一些。

5.任务三总结

任务三做了十天,其实应该不需要这么多时间,回想起来时间浪费的地方主要在nginx的子域访问,还有项目发布的问题,还有一点就是有点跳,没有踏实的一步一步完成任务,而是做一个大概的结果就下一步,导致了后面用到前面步骤知识的时候又要回去重新完善。所以以后还是需要稳扎稳打,切莫心急。

任务三主要的目的是让我们熟悉服务器发布项目,以及对项目运行情况的了解。


  首先执行mvn install 打war包,寻找服务器前面都已经做过了。

  然后是将任务二的项目发布到服务器,这里设计了三中web容器的使用,tomcat,jetty,resin。然后自己学习shell语言,写出脚本。脚本就是将需要的命令集合到一个执行文件中,这样省去了自己一步一步的去输入命令的过程。要写脚本首先需要学习shell语言,还有就是需要知道要执行什么命令,完成什么。

比如启动容器的脚本,就是先进入web容器启动的文件,然后执行启动。

发布脚本步骤会多一点但是自己手动的完成一次流程,就可以写出来了。

  接下来是nginx的学习,主要就是反向代理,反向代理代理的是服务端,正向代理代理的是客户端。

  最后就是编写脚本查看日志统计访问时间。这一部分首先还是需要自己知道到底要干什么,然后需要怎么去做。最后才是写脚本。这一步就是需要我们学会查看日志,找到日志中的信息,然后在使用脚本对大段的日志进行筛选出我们需要的内容。(涉及到awk,grep,SpringAOP打印日志等。)

  任务三收获就是学习了各种知识,除此之外,碰到了各种问题也是一种锻炼,不要把困难放大,沉下心总是能学会的。

明天的计划:

准备小课堂。

开始任务4

遇到问题:

脚本写的时候出现了点小问题,就是格式不对。空格还有符号的问题。

收获:

统计时间的脚本终于写好了。。

任务三做完了

最后还有一点就是困难都是纸老虎。。。看起来真的很复杂,静下心慢慢做,一会就做好了。

禅道:任务三完成了。

http://taskNaNteng.com/zentao/project-task-343.html

 



返回列表 返回列表
评论

    分享到