发表于: 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数据库。

遇到的问题:

    往往碰到的问题,都是细节的操作造成的,需要边学习边总结。可能这些操作问题,如果不记录下来,过了自己都忘了,起不到改正进步的效果。只理解是不对的,操作的习惯也很重要。

收获:

    今天用了全新的写日志方法,将自己学习的过程进行了记录。对于细节碰到的问题有了新发现,以后可以试用一段时间这种方式。比较总结型的和记录型的日志方式的区别。加油!


返回列表 返回列表
评论

    分享到