状态查看:

1.查看apache 各状态连接数
[root]#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 8
SYN_RECV 1
ESTABLISHED 1747
FIN_WAIT1 12
TIME_WAIT 14208
……
(关于awk详解  参考linux类别中awk一文)
以下同理

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

2.查看httpd进程数
ps -ef | grep httpd | wc -l  
 
 返回结果示例:

1388 
  表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整
查看所有80端口的连接数
netstat -ant | grep '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

查看80端口连接数最多的20个IP

netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20

用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

查找较多time_wait连接

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

找查较多的SYN连接

netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more

apache中的几种状态:
1、服务器端LISTENING状态
   LISTENING表示处于侦听状态
2、ESTABLISHED状态
   ESTABLISHED状态是表示两台机器正在传输数据,
3、客户端SYN_SENT状态
    从上面的分析可以看出,当请求连接时客户端首先要发送同步信号给要访问的机器,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,正常情况下SYN_SENT状态非常短暂。
4、服务器端状态SYN_RCVD
    从上面的分析可以看出,当服务器收到客户端发送的同步信号时,将标志位ACK和SYN置1发送给客户端,此时服务器端处于SYN_RCVD状态,如果连接成功了就变为ESTABLISHED,正常情况下SYN_RCVD状态非常短暂。
    如果发现有很多SYN_RCVD状态,那你的机器有可能被SYN Flood的DoS(拒绝服务攻击)攻击了。
    这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout。
5、其它
   在TCP的标志位中有一位是Reset,如果包重发该标志位置为1,重发包很多时网络一定有问题
三次握手建立连接状态:
 CLOSED:无连接是活动的或正在进行
 LISTEN:服务器在等待进入呼叫
 SYN_RECV:一个连接请求已经到达,等待确认
 SYN_SENT:应用已经开始,打开一个连接
 ESTABLISHED:正常数据传输状态
四次握手关闭连接状态:
1.被动方
CLOSE_WAIT : 服务端收到FIN,表示对方没有数据发送给你了,这时进入CLOSE_WAIT状态,回复ACK,                                                      但未必你所有的数据都全部 发送给对方了。
              当连接中的一方收到对方发过来的FIN时,它将进入CLOSE_WAIT状态。
 LAST_ACK:等待所有分组结束,服务端再次发送FIN,表示自己也发完了,进入LAST_ACK状态 
 
2.主动方
 FIN_WAIT1:应用已经完成数据传送,发送FIN,进入FIN_WAIT1状态
 FIN_WAIT2:另一边已同意释放发送ACK确认,收到ACK 即进入 FIN_WAIT2状态
 TIME_WAIT:另一边数据发送完毕则发送FIN,收到FIN即进入TIME_WAIT状态
 CLOSING:两边同时尝试关闭




日志分析:

日志文本的格式

1      2 3        4           5    6     7           8     9    10      11

10.0.7.5
-
- [29/Sep/2014:10:45:43
+0800]
"GET /images/dlzc.jpg
HTTP/1.1" 200
104298 "http://10.0.7.100/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.1.2000 Chrome/30.0.1599.101 Safari/537.36"

以不同背景色来区分日志中的每个字段

1、在apachelog中找出访问次数最多的10个IP:
awk '{print $1}' access_log | sort | uniq -c | sort -nr | head -n 10

awk 首先将每条日志中的IP抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数。
sort -nr按照数字进行倒叙排序。
head进行前十名筛选;

2、在apache日志中找到访问最多的页面:
awk '{print $11}' access_log | sed 's/^.*cn\(.*\)\"/\1/g' | sort | uniq -c | sort -rn | head

awk 首先将每条日志中的访问页面抓出来,如日志格式被自定义过,可以 -F 定义分隔符和 print指定列;
sed 's/^.*cn\(.*\)\"/\1/g'
    将 .*cn\(.*\)\"
字符串用  \1
字符串替代,末端的g表示在行内进行全局替换,即某行              
        出现多个要替换字符,则全部替换;
                    用sed的替换功能将”http://www.a.cn/common/index.php”替换成括号内的内容                                      
                                                   ”http://www.a.cn(/common/index.php)”
            sed
's/^.*cn/(.*/)/"//1/g'

sort进行初次排序,为的使相同的记录排列到一起;
upiq -c 合并重复的行,并记录重复次数;
sort -nr按照数字进行倒叙排序;

3、在apache日志中找出访问次数最多的几个分钟。
awk '{print  $4}' access_log  | cut -c 14-18 | sort|uniq -c | sort -nr | head
awk    首先将每条日志中的访问页面抓出来
     [29/Sep/2014:10:45:43
cut -c 14-18   再次将字符串中 14-18值抓出          10:45

1.查看apache连接数
[root]#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
LAST_ACK 8
SYN_RECV 1
ESTABLISHED 1747
FIN_WAIT1 12
TIME_WAIT 14208

123

2.查看httpd进程数
(即prefork模式下Apache能够处理的并发请求数)
ps -ef | grep httpd | wc -l  
 
 返回结果示例:

1388 
  表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整
对连接的IP按连接数量进行排序

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

apache 访问状态 分析的更多相关文章

  1. apache访问日志分析[转]

    当前WEB服务器中联接次数最多的ip地址 #netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr 查看日志中访问次数最多的前10个IP #c ...

  2. shell脚本分析apache日志状态码

    一.首先将apache日志按天切割 vi /etc/httpd/conf/httpd.conf        ErrorLog "|rotatelogs /var/log/httpd/%Y% ...

  3. Python基础(三):简化除法判断、分析apache访问日志、扫描存活主机、利用多线程实现ssh并发访问

    一.简化除法判断 目标: 编写mydiv.py脚本,主要要求如下: 提示用户输入一个数字作为除数 如果用户按下Ctrl+C或Ctrl+D则退出程序 如果用户输入非数字字符,提示用户应该输入数字 如果用 ...

  4. Apache开启状态查看页面(原创贴-转载请注明出处)

    =================写在前面的话================== 场景描述:有时候我们需要查看apache的运行状态,只需要开启apache的status功能就可以实现,但是stat ...

  5. 分类: LINUX apache 访问设置配置

    分类: LINUX 在一次面试的时候被问到apache访问控制的问题.由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制.所以只知道个大概: 在主 ...

  6. 统计apachelog各访问状态个数(使用MapReduce)

    统计日志文件中各访问状态的个数. 1.将日志数据上传到hdfs 路径 /mapreduce/data/apachelog/in 中 内容如下 ::::::: - - [/Feb/::: +] :::: ...

  7. Apache用户认证、域名跳转、Apache访问日志

    5月29日任务 课程内容: 11.18 Apache用户认证11.19/11.20 域名跳转11.21 Apache访问日志扩展 apache虚拟主机开启php的短标签 http://ask.apel ...

  8. 部署Nginx网站服务实现访问状态统计以及访问控制功能

    原文:https://blog.51cto.com/11134648/2130987 Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物 ...

  9. Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志

    一.Apache用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容 <Virtu ...

随机推荐

  1. 各种小的 dp (精)

    Q~ 抛一枚硬币 n 次,每次可能是正面或者反面向上,求没有连续超过 k 次硬币向上的方案数 A : dp[ i ] 表示到 i 位置的方案数, 1 . 当 i < k 时, dp[i] = d ...

  2. 【5min+】传说中的孪生兄弟? Memory and Span

    系列介绍 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net ...

  3. C# 添加、删除、读取Word形状(基于Spire.Cloud.Word.SDK)

    本文介绍调用Spire.Cloud.Word.SDK提供的接口shapesApi来操作Word形状,包括添加形状AddShape(),添加形状时,可设置形状类型.颜色.大小.位置.倾斜.轮廓.文本环绕 ...

  4. iocp性能分析

    网络上找iocp性能分析的文章很少,因工作关系,花了点时间特意从客观数据和理论角度分析了下iocp的性能 环境 CPU i7 4核8线程 1G网卡,echo方式测试(一个客户机模拟多个客户端模式,模拟 ...

  5. 【Java并发基础】管程简介

    前言 在Java 1.5之前,Java语言提供的唯一并发语言就是管程,Java 1.5之后提供的SDK并发包也是以管程为基础的.除了Java之外,C/C++.C#等高级语言也都是支持管程的. 那么什么 ...

  6. (转)GET来的漏洞

    转自呆子不开口在wooyun知识库的文章 0x00 前言 这篇文章主要讲目前互联网上get方法被不规范使用带来的一些安全漏洞.其中重点会讲get请求在账号登陆体系中被滥用的场景和攻击方式. 0x01 ...

  7. Sublime Text 3 部分安装过程记录

    概览: Sublime Text 3下载网址 Package Control的安装 Install Package报错(There are no packages availabel for inst ...

  8. influxdb+Grafana+jmeter监控搭建

    安装InfluxDB InfluxDB的简介 InfluxDB 是用Go语言编写的一个开源分布式时序.事件和指标数据库,无需外部依赖. 类似的数据库有Elasticsearch.Graphite等.. ...

  9. [ Python入门教程 ] Python中日志记录模块logging使用实例

    python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...

  10. 爬虫之 cookie , 验证码,模拟登陆,线程

    需求文档的定制 糗事百科的段子内容和作者(xpath的管道符)名称进行爬取,然后存储到mysql中or文本 http://sc.chinaz.com/jianli/free.html爬取简历模板 HT ...