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:没有任何连接状态