废话不多说,直接上这个实例:

一. 统计apache日志单ip访问请求数排名:

   假设apache日志内容access.log内容为:

 10.0.0.41 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0"  -
10.0.0.43 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.42 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.46 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.42 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.47 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.41 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.47 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.41 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -
10.0.0.46 - - [/Dec/::: +] "HEAD /checkstatus.jsp HTTP/1.0" -

  一般的做法是:

 [root@localhost /]# awk '{print $1}' access.log|sort|uniq -c |sort -rn -k1
10.0.0.41
10.0.0.47
10.0.0.46
10.0.0.42
10.0.0.43

  一直在思考 统计IP最多的数的意义何在?

  其实,一般单个IP访问数量过百,就值得怀疑了,如果短时间内上万PV访问,说明就不正常了,可以采取相应的处理手段,比如封掉此IP,此法要慎重,否则,可能会有误封问

题,因为,国内的大多数公司还是NAT上网的,出口一个IP。

二.  统计服务器当前单IP连接数最大的IP地址前十

  使用netstat -an >>test.log 可以将连接到服务器的一些基本信息重定向到文本文件中,假设内容如下:

 Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local AddressForeign AddressState
tcp00 124.123.3.79:80219.85.194.23:12004SYN_RECV
tcp00 124.123.3.77:80183.8.74.57:3276SYN_RECV
tcp00 124.123.3.77:80124.236.0.214:63191SYN_RECV
tcp00 124.123.3.77:80121.31.42.148:2338TIME_WAIT
tcp01023 124.123.3.77:8061.178.184.222:62683FIN_WAIT1
tcp00 124.123.3.77:80222.79.242.74:7416TIME_WAIT
tcp04839 124.123.3.77:80121.31.42.148:30638FIN_WAIT1
tcp00 124.123.3.77:80183.10.154.60:37282TIME_WAIT
tcp01 124.123.3.77:8059.49.174.176:26913CLOSING
tcp00 124.123.3.77:80121.31.42.148:1787TIME_WAIT
tcp0174 124.123.3.77:80183.8.74.57:1165CLOSING

  使用awk可以统计出ESTABLISHED的一些IP的链接信息:

netstat -an|grep EST|awk-F '[ :]+' '{++S[$6]} END {for (key in S) print "ip:"key"----->",S[key]}'|sort -rn -k2
注意,这里过滤的是已经建立连接的的连接,即状态ESTABLISHED。

两种案例的反思:

  对于命令结果中,单IP结尾的数大的,可以认为是不正常的访问。如 121.31.42.148 100 ,表示一个IP有100个连接

  一般来说可以怀疑不正常,当网站压力大时,可以考虑限制或封掉这些冒似非法IP,当然,也不排除,企业里多个用户用一个出口IP访问。

  壮士扼腕,有时也是必须的,否则,可能网站整体影响更大,甚至瘫痪。有时,各种搜索引擎的爬虫是很疯狂的,通过本例及上面的案例,我们可以再负载IO高时,能够进行临

时应对,当然,这不是长久的方法,优化网络和服务器,部署大规模集群服务器才是较好的解决之道。

  我们可以使用awk进行简单地统计线上服务器的一些负载,保证服务器的高效运行。

awk的常用操作场景以及工作中涉及到的一些场景实例的更多相关文章

  1. Vim常用操作-快速删除括号中内容。

    如果你和我一样,希望拥有众多工具,发挥工具最大执行效率,让工作事半功倍的话,我推荐你来使用下 Vim. 刚接触Vim 会觉得它的学习曲线非常陡峭,要记住很多命令,操作太复杂.所以这个系列的分享,不会教 ...

  2. Idea 常用功能汇总,工作中常用技巧

    1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀.  2.常用技巧 2.1 通过Alt+F8查看变量 ...

  3. Idea 常用功能汇总,工作中常用技巧,移出请说明原因,笔记花了好长时间汇总的

    1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀.  2.常用技巧 2.1 通过Alt+F8查看变量 ...

  4. sybase常用SQL语句,工作中积累的

    -------创建sybase设备 语句--------- disk init name="DEV_DB_CLIENT_DAT26", physname="F:\syba ...

  5. 事务处理操作(COMMIT,ROLLBACK)。复制表。更新操作UPDATE实际工作中一般都会有WHERE子句,否则更新全表会影响系统性能引发死机。

    更新操作时两个会话(session)同时操作同一条记录时如果没有事务处理操作(COMMIT,ROLLBACK)则会导致死锁. 复制表:此方法Oracle特有

  6. Java中Cookie常用操作类(Spring中操作Cookie)

    说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...

  7. 软件测试工作中涉及的Linux命令整理

    Linux文件系统命令 1. 安装火狐浏览器,首先得知道Linux系统是64位的还是32位的 uname -a 2. 将下载的火狐浏览器压缩包移动到指定目录(/user/local)下 sudo mv ...

  8. [工作中的设计模式]适配器模式adapter

    一.模式解析 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 也就是说,如果已经写好了一个接口,但是又来了一种截然不同的接口,如 ...

  9. [工作中的设计模式]策略模式stategy

    一.模式解析 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. 策略模式的关键点为: 1.多种算法存在 2.算法继承同样的接口 ...

随机推荐

  1. centos6.5 系统上升级2.6.6到2.7.12

    因开发需要,今天把CentOS 6.4自带的Python2.6.6升级到了Python2.7.3.按照如下步骤进行升级 1.查看当前系统python的版本 python -V 2.下载2.7.3版本的 ...

  2. ResultSet是结果集对象

    ResultSet是结果集对象 DriverManager管理一组驱动程序 PreparedStatement预编译的,用来发送和执行SQL语句的

  3. Statement和PreparedStatement都是用来发送和执行SQL语句的

    Statement和PreparedStatement都是用来发送和执行SQL语句的 DriverManager管理一组驱动程序

  4. 【BZOJ】1057: [ZJOI2007]棋盘制作(单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1057 同某一题差不多?记不清是哪题了.. 就是每一行进行单调栈维护递增的高度,在进栈和出栈维护一下长 ...

  5. 【BZOJ】1696: [Usaco2007 Feb]Building A New Barn新牛舍(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1696 原题要求min(sum{|x-xi|+|y-yi|}),且一定要看题:“没有两头牛的吃草位置是 ...

  6. RAID的简单说明

    RAID,为 Redundant Arrays of Independent Disks 的简称,中文为廉价※冗余磁盘阵列 . 磁盘阵列 其实也分为软阵列 (Software Raid) 和硬阵列 ( ...

  7. hdu 2717:Catch That Cow(bfs广搜,经典题,一维数组搜索)

    Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. node 下好用的工具

    1. supervisor Node Supervisor is used to restart programs when they crash. Node Supervisor 是用来当程序崩溃时 ...

  9. LinCode落单的数

    easy 落单的数 查看执行结果 60% 通过 给出2*n + 1 个的数字,除当中一个数字之外其它每一个数字均出现两次.找到这个数字. 您在真实的面试中是否遇到过这个题? Yes 例子 给出 [1, ...

  10. Git------pull出错解决方法

    1.图片 转载:http://www.2cto.com/os/201404/293183.html