8种机械键盘轴体对比
查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
Linux命令:ps -ef | grep httpd | wc -l
返回结果示例:17
查看Apache的并发请求数及其TCP连接状态:
Linux命令:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
这条命令是网上找的,
下面来分析一下:
首先 netstat -n 就是输出目前所有的连接数,其中 -n 选项表示不解析地址,直接输出数字形式的地址。
然后把输出结果重定向给awk 命令;
awk 命令是一个非常棒的数据处理命令,可以把一行行字分成数个字段来处理。
标准的语法格式是:awk '条件类型1{动作1} 条件类型2{动作2}' filename
当然由于用了管道链接,所以这里的filename就可以省略掉了;
整个awk的处理流程是:读入一行,并将这一行的数据填入$0,$1等变量里去。
依据条件类型的限制,判断是否要进行后面的动作。
做完所有的动作和条件类型。
如果还有下一行的话,重复1-3的动作。
注意:其中$0表示整行,而$1才是第一个字段。
同时,awk还提供了很多内置变量,方便我们得到总行数和总段数之类的,下面介绍三个变量:变量名称代表意义
NF每一行拥有的字段总数
NR目前awk在处理哪一行
FS目前的分隔字符,默认是空格
其中$NF通常用来表示最后一列,而我们要用到的正是最后一列,因为netstat输出中最后一列是连接的状态。
这条命令中,第一个判断条件是 /^tcp/
这是一个正则表达式,就是说寻找以“tcp” 这个字段开始的行,这也是我们需要的,因为netstat除了输出tcp连接还会输出udp以及unix socket连接。
第一个动作是++S[$NF]。
意思是建立一个数组S,其中数组下标是netstat输出的最后一列的字符,就是连接的状态,然后给相应的状态的元素加一;
第二个判断条件是 END
很简单,就是文件结束的时候;
第二个动作就是 for(a in S) print a, S[a]}
就是输出各种状态以及各状态的连接数目。
总得来看,这条命令的作用就是输出系统中tcp连接中各种状态的数目。
返回结果示例:TIME_WAIT 8947
FIN_WAIT1 15
FIN_WAIT2 1
ESTABLISHED 55
SYN_RECV 21
CLOSING 2
LAST_ACK 4
其中LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态