发表于: 2017-04-21 10:11:14
4 1905
今天完成的任务:
1.nginx延时统计
首先在/var/log/nginx 下vi新文件statistics.txt,作为shell脚本,内容入下:
cat access.log |sed -rn '/21\/Apr\/2017/p' > statistics.txt
#统计statistics.txt里面有多少个ip访问
cat statistics.txt |awk '{print $1}'|sort |uniq > ipnum.txt
#通过shell统计每个ip访问次数
for i in `cat ipnum.txt`
do
iptj=`cat access.log |grep $i | grep -v 400 |wc -l`
echo "ip地址"$i"在2017-4-21日全天(24小时)累计成功请求"$iptj"次,平均每分钟请求次数为:"$(($iptj/1440)) >> result.txt
done
#统计响应时间小于600ms的访问数量
echo "小于600ms响应时间访问数量:"$a >> result.txt
echo "小于600ms响应时间访问数量:"cat ${access} | awk ' {if(s10<600) a=a+1} END{print a;}'
#统计响应时间大于800ms的访问数量
echo "大于800ms响应时间访问数量:"$b >> result.txt
echo "大于800ms响应时间访问数量:"cat ${access} | awk ' {if(s10>800) b=b+1} END{print b;}'
AWK,一种文本处理工具,和grep,sed类似,利用一些特定语法格式的命令来完成对文件的操作。
打印出的日志如下:
2.Apache,Nginx,Tomcat,Jetyy,Resin的区别,及其它收费http服务器,和浏览器之间的关系。
Apache Http Server是老牌的服务器,在市场的占有率一直很高,最高达到70%,最近数据仍然有21.79%而且是开源免费。 Apache Software Foundation就是在维护Apache Http Server的过程中衍生出来的组织,它的诞生早与现在的绝大多数Apache Project,而且仍在维护,它和Nginx一样是免费服务器中面向HTTP的,关注的问题是反向代理了,负载均衡,域名协作,http解析这些比较宏观的对象,Nginx对于高并发有特别的优势,并且本身部署方便。Tomcat和Jetty在解析jsp页面,运行Java类程序有独特优势,所以一般部署在具体的项目运行层面,比较关注项目里具体的业务实现,Resin和Tomcat差不多,在监控功能方便稍微比Tomcat强一些,但Tomcat是Apache旗下,相关的资料多,方便参考。另外收费的web server还有微软的IIS,谷歌的GWS,等等,也可以实现相关的功能。下面是一张最近份额统计图:
3.Resin安装,查看日志。
一开始下载的是resin3,和resin4有很大不同,安装后无法启动,过程如下
ubuntu@VM-133-216-ubuntu:/usr/local$ /usr/local/resin-ee-3.0.8/bin/httpd.sh -verbose
JAVA_HOME: /usr/jvm/jdk1.8.0_121
RESIN_HOME: /usr/local/resin-ee-3.0.8
SERVER_ROOT: /usr/local/resin-ee-3.0.8
CLASSPATH:
.
{JAVA_HOME}/lib
{JAVA_HOME}/jre/lib
/usr/local/resin-ee-3.0.8/lib/jms-11.jar
/usr/local/resin-ee-3.0.8/lib/jmx-12.jar
/usr/local/resin-ee-3.0.8/lib/jsdk-24.jar
/usr/local/resin-ee-3.0.8/lib/webutil.jar
/usr/local/resin-ee-3.0.8/lib/jta-101.jar
/usr/local/resin-ee-3.0.8/lib/resin-ejb.jar
/usr/local/resin-ee-3.0.8/lib/portlet-10.jar
/usr/local/resin-ee-3.0.8/lib/resin.jar
/usr/local/resin-ee-3.0.8/lib/jca-15.jar
/usr/local/resin-ee-3.0.8/lib/jstl-11.jar
/usr/local/resin-ee-3.0.8/lib/license.jar
/usr/local/resin-ee-3.0.8/lib/ejb-20.jar
/usr/local/resin-ee-3.0.8/lib/isorelax.jar
/usr/jvm/jdk1.8.0_121/lib/tools.jar
LD_LIBRARY_PATH:
/usr/local/resin-ee-3.0.8/libexec
java: /usr/jvm/jdk1.8.0_121/bin/java
java args: -Xss1m -Dresin.home=/usr/local/resin-ee-3.0.8 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl
class: com.caucho.server.resin.Resin
resin args:
command-line: /usr/jvm/jdk1.8.0_121/bin/java -Xss1m -Dresin.home=/usr/local/resin-ee-3.0.8 -Djava.util.logging.manager=com.caucho.log.LogManagerImpl com.caucho.server.resin.Resin
Specification version 1.8 of package javax.management, Java Platform API Specification, version 1.8 is not compatible with Resin 3.0.8. Resin 3.0.8 requires version 1.2.
ubuntu@VM-133-216-ubuntu:/usr/local$
从新下载安装包resin-4.0.36进行安装
必须先进到resin-4.0.36目录下才可以使用下面的 ./configure 命令,我开始的时候在/usr/local下折腾了好一会
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# ./configure --prefix=/usr/local/resin-4.0.36 --with-java-home=/usr/jvm/jdk1.8.0_121 --enable-64bit
Using JVMTI for class reloading
Can't find OpenSSL include ''
conftest.c:1:25: fatal error: openssl/ssl.h: No such file or directory
compilation terminated.
configure: WARNING: Can't compile SSL. Check compilation flags: gcc -g -O2 -DEPOLL -D_POSIX_PTHREAD_SEMANTICS -DB64 -pthread -fPIC -fno-omit-frame-pointer -O2 -DHAS_SOCK_TIMEOUT -DHAS_SENDFILE -DHAS_SPLICE -DPOLL -DHAS_JVMTI -L -lssl -lcrypto -lpthread -lrt -lc
configure: creating ./config.status
config.status: creating Makefile
config.status: creating modules/c/src/Makefile
config.status: creating modules/c/src/common/Makefile
config.status: creating modules/c/src/apache2/Makefile
config.status: creating modules/c/src/resin_os/Makefile
config.status: creating init.d/resin
config.status: creating bin/resinctl
config.status: executing depfiles commands
config.status: executing libtool commands
Resin Configuration Summary:
RESIN : 4.0.36
home : /usr/local/resin-4.0.36
root : /usr/local/resin-4.0.36
conf : /usr/local/resin-4.0.36/conf
log : /usr/local/resin-4.0.36/log
plugins : common resin_os
init : /etc/init.d/resin
JAVA_HOME : /usr/jvm/jdk1.8.0_121
JNI : 64-bit
include : -I/usr/jvm/jdk1.8.0_121/include -I/usr/jvm/jdk1.8.0_121/include/linux
CFLAGS :
cflags_shlib : -fpic
ld_shlib : gcc
ldflags_shlib : -shared -fPIC -m64
libs_shlib :
epoll() for keepalives
OPENSSL : No OpenSSL has been found
*** OpenSSL libraries cannot be compiled ***
文件配置完毕,现在开始启动resin,过程中对Linux的目录了解不深,遇到一些低级错误,最后启动成功。
使用service命令没有启动成功,第一次命令输错,软件名写错
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# servic resin start
No command 'servic' found, did you mean:
Command 'service' from package 'init-system-helpers' (main)
servic: command not found
第二次软件名写错
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# service resin start
Failed to start resin.service: Unit resin.service not found.
第三次命令输对了,但还是启动不了
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# service resin-4.0.36 start
Failed to start resin-4.0.36.service: Unit resin-4.0.36.service not found.
换一种方式启动,目录名应该是resin-4.0.36
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# /usr/local/resion/bin/resin.sh start
-su: /usr/local/resion/bin/resin.sh: No such file or directory
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# /usr/local/resion-4.0.36/bin/resin.sh start
-su: /usr/local/resion-4.0.36/bin/resin.sh: No such file or directory
进入到bin中查看
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# cd bin
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# ls
resinctl resinctl.in resin.sh start.bat stop.bat
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# cd resin.sh
-su: cd: resin.sh: Not a directory
搜索网络资料,用另外一种方式启动,启动成功
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# sh resin.sh start
Resin/4.0.36 launching watchdog at 127.0.0.1:6600
Resin/4.0.36 started -server 'app-0' with watchdog at 127.0.0.1:6600
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# sh resin.sh stop
Resin/4.0.36 stopped for watchdog at 127.0.0.1:6600
为了找到前一种方法启动失败的原因,做实验进行分析,退出resin相关的目录,到根目录下
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# cd ..
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# cd ..
root@VM-133-216-ubuntu:/usr/local# cd ..
root@VM-133-216-ubuntu:/usr# cd ..
再次使用前面的方法启动,启动成功
root@VM-133-216-ubuntu:/# /usr/local/resin-4.0.36/bin/resin.sh start
Resin/4.0.36 launching watchdog at 127.0.0.1:6600
Resin/4.0.36 started -server 'app-0' with watchdog at 127.0.0.1:6600
继续分析,这种启动方式是不是和当前所在的目录有关,如果当前所在目录不同,启动命令也要做修改,做实验以验证
root@VM-133-216-ubuntu:/# cd /usr
root@VM-133-216-ubuntu:/usr# /local/resin-4.0.36/bin/resin.sh stop
-su: /local/resin-4.0.36/bin/resin.sh: No such file or directory
root@VM-133-216-ubuntu:/usr# sh resin.sh stop
sh: 0: Can't open resin.sh
root@VM-133-216-ubuntu:/usr# /local/resin-4.0.36/bin
-su: /local/resin-4.0.36/bin: No such file or directory
root@VM-133-216-ubuntu:/usr# /local/resin-4.0.36/bin/
-su: /local/resin-4.0.36/bin/: No such file or directory
root@VM-133-216-ubuntu:/usr# cd/local/resin-4.0.36/bin/
-su: cd/local/resin-4.0.36/bin/: No such file or directory
root@VM-133-216-ubuntu:/usr# cd /local/resin-4.0.36/bin
-su: cd: /local/resin-4.0.36/bin: No such file or directory
root@VM-133-216-ubuntu:/usr# cd /local/resin-4.0.36/bin/
-su: cd: /local/resin-4.0.36/bin/: No such file or directory
root@VM-133-216-ubuntu:/usr# cd local/resin-4.0.36/bin/
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# sh resin.sh stop
Resin/4.0.36 stopped for watchdog at 127.0.0.1:6600
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36/bin# cd ..
root@VM-133-216-ubuntu:/usr/local/resin-4.0.36# cd ..
root@VM-133-216-ubuntu:/usr/local# cd ..
root@VM-133-216-ubuntu:/usr# cd ..
root@VM-133-216-ubuntu:/# usr
No command 'usr' found, did you mean:
Command 'ssr' from package 'soundscaperenderer-common' (universe)
Command 'ur' from package 'libur-perl' (universe)
Command 'csr' from package 'rheolef' (universe)
Command 'sr' from package 'surfraw' (universe)
Command 'sur' from package 'subtle' (universe)
usr: command not found
最后得出结论,这种启动方式,实际上是在当前目录给计算机一个路径,而这个路劲是以当前目录为起点,计算机才知道怎么做,最后实验从当前目录指定到相关启动目录,resin启动成功,对Linux操作系统又有了新的认识
root@VM-133-216-ubuntu:/# cd usr
root@VM-133-216-ubuntu:/usr# local/resin-4.0.36/bin/resin.sh start
Resin/4.0.36 launching watchdog at 127.0.0.1:6600
Resin/4.0.36 started -server 'app-0' with watchdog at 127.0.0.1:6600
root@VM-133-216-ubuntu:/usr#
启动成功,查看日志
root@VM-133-216-ubuntu:/usr# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6600 0.0.0.0:* LISTEN 21391/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 21434/java
tcp 0 0 127.0.0.1:6800 0.0.0.0:* LISTEN 21434/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1006/sshd
tcp6 0 0 :::3306 :::* LISTEN 1035/mysqld
tcp6 0 0 :::22 :::* LISTEN 1006/sshd
明天的计划:
明天开始任务四,了解动态页面,静态页面,设计DB数据库。
遇到的问题:
往往碰到的问题,都是细节的操作造成的,需要边学习边总结。可能这些操作问题,如果不记录下来,过了自己都忘了,起不到改正进步的效果。只理解是不对的,操作的习惯也很重要。
收获:
今天用了全新的写日志方法,将自己学习的过程进行了记录。对于细节碰到的问题有了新发现,以后可以试用一段时间这种方式。比较总结型的和记录型的日志方式的区别。加油!
评论