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

一. 统计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. 【BZOJ】1689: [Usaco2005 Open] Muddy roads 泥泞的路(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1689 一开始我也想到了贪心,,,策略是如果两个连续的水池的距离小于l的话,那么就将他们链接起来,,, ...

  2. ThinkPHP项目笔记之RBAC(权限)上篇

    当理清这5个表的关系,接下来,就是功能介绍了.

  3. freemarker include 和 import

    lib/my_test.ftl 模板内容如下: <#macto copyright date> <p>Copyright (C)${date}Julia Smith.All r ...

  4. iOS开发之-- 设置启动图片

    一.添加启动图片 点击Assets.xcassets进入图片管理,右击,弹出"New Launch Image"或点下面的+号创建Launch Image: 如图,右侧的勾选可以让 ...

  5. 编译OSG_FBX插件

    安装FBX的SDK,例如C:\Program Files\Autodesk\FBX\FBX SDK\2017.1\ 在CMake配置lib库路径的时候,使用 C:\Program Files\Auto ...

  6. measure layout onMeasure() onLayout()

    1.onMeasure() 在这个函数中,ViewGroup会接受childView的请求的大小,然后通过childView的 measure(newWidthMeasureSpec, heightM ...

  7. 在scrollview中双击定点放大的代码

    双击放大是 iPhone 的一个基本操作,第三方程序里引入这一功能的话,主要是在 scrollview 呈现一张图片或者 PDF 页面时,双击可以放大,主要代码如下 - (void)scrollVie ...

  8. IT 运行在云端,而云运行在 Linux 上

    导读 IT 正在逐渐迁移到云端.那又是什么驱动了云呢?答案是 Linux. 当连微软的 Azure 都开始拥抱 Linux 时,你就应该知道这一切都已经改变了.不管你接不接受, 云正在接管 IT 已经 ...

  9. Zabbix-3.0.3结合Grafana-3.1.0给你想要的绘图

    导读 Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器.Grafana 是开源的,功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 Open ...

  10. hammer.js移动端手势库

    hammer.js 是一个多点触摸手势库,能够为网页加入Tap.Double Tap.Swipe.Hold.Pinch.Drag等多点触摸事件,免去自己监听底层touchstart.touchmove ...