1、查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
返回结果一般如下:
LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30
ESTABLISHED 1597 (正常数据传输状态)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)
其他参数说明:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态/当前并发连接数
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
一般来说,tcp正常关闭需要四个包。比如a和b关闭连接,a先 给b发一个fin,b会进行确认ack,然后b也会发出fin,当a接受到这个fin,并发出最后一个ack后,就会处于time_wait状态。这个时 间长短跟操作系统有关,一般会在1-4分钟,也就是两倍的数据包(2msl)最大生存时间。TCP主动关闭方采用TIME_WAIT主要是为了实现终止 TCP全双工连接的可靠性及允许老的重复分节在网络中消逝,等过了2msl(大约1~4分钟)后TIME_WAIT就会消失。
TIME_WAIT状态的目的是为了防止最后a发出的ack丢失,让b处于LAST_ACK超时重发FIN
所以说,主动发起关闭连接的一方会进入time_wait状态,这个时候,进程所占用的端口号不能被释放。除非在你的程序中用setsockopt设置端口可重用(SOCK_REUSE)的选项,但这不是所有操作系统都支持的
其中的TIME_WAIT状态也成为2MSL等待状态。每个具体的TCP实现必须选择一个报文段最大生存时间MSL(maximum
segment lifetime)。它是任何报文段被丢弃前在网络内的最长时间 。我们知道这个时间是有限的,因为TCP报文段以IP
数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字段。
在RFC793指出MSL为2分钟,然而,实现中的常用值是30秒,1分钟或2分钟。
对一个具体实现锁定的MSL值,处理的原则是:当TCP执行一个主动关闭,并发回最后一个ACK,该链接必须在TIME_WAIT
状态停留的时间为2倍的MSL。这样可以让TCP再次发送最后的ACK以防止这个ACK丢失。(另一端超时并重发最后的FIN)。
这种2MSL等待的另一个结果是这个TCP连接在2MSL等待期间,定义这个连接的socket(客户的IP地址和端口号,服务器
的IP地址和端口号不能被使用)。这个连接只能在2MSL结束后才能被使用。
遗憾的是,大多数TCP实现强加了更为严格的限制,在2MSL等待期间,插口中使用的本地端口在默认情况下不能再被使用。
注意:
1.一个socket对在它处理2MSL等待时,将不能再被使用。尽管许多具体的实现中允许一个进程重新使用仍处于2MSL等待的
端口(通常是设置选项SO_REUSEADDR),但TCP不能允许一个新的连接建立在相同的socket对上。
2.一个端口可同时绑定在UDP和TCP服务上,但是如果一个端口要同时绑定在两个TCP或者UDP服务上,则会出现端口已占用
的错误。因为TCP和UDP的端口在逻辑上是分离的。
2、查看Nginx运行进程数
ps -ef | grep nginx | wc -l
返回的数字就是nginx的运行进程数,如果是apache则执行
ps -ef | grep httpd | wc -l
3、查看Web服务器进程连接数:
netstat -ant | grep 80 | grep ESTABLISHED -c
netstat -na|grep ESTABLISHED|wc -l
4.当前所有80端口的请求总数
netstat -nat|grep -i "80"|wc -l
当前所有80端口的已建立连接的总数
netstat -na|grep ESTABLISHED|wc -l
4、查看MySQL进程连接数:
ps axef | grep mysqld -c
抓瞬间导致cpu毛刺的进程,开启top的batch模式(-b),将时间间隔调小(-d),再设置好次数(-n),将结果重定向到日志文件中,坐等大鱼上钩。
ps aux | head -1;ps aux|grep -v PID|sort -rn -k +4 | head 前十内存占用
端口占用
netstat -anp
指定目录下文件大小
du -sh [filename]
指定目录下文件大小倒序前十
du -s [filename] | sort -nr | head
1、 查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l
2、 查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc –l
3、 查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq
4、 查看CPU的主频
#cat /proc/cpuinfo |grep MHz|uniq
5、 # uname -a
6、 Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux (查看当前操作系统内核信息) 7、 # cat /etc/issue | grep Linux
8、 Red Hat Enterprise Linux AS release 4 (Nahant Update 5(查看当前操作系统发行版信息)
9、 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz (看到有8个逻辑CPU, 也知道了CPU型号)
9 # cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0 4 physical id : 1
(说明实际上是两颗4核的CPU)
10、# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
11、# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc –l
8(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
12、如何获得CPU的详细信息: linux命令:cat /proc/cpuinfo
13、用命令判断几个物理CPU,几个核等: 逻辑CPU个数:
# cat /proc/cpuinfo | grep "processor" | wc -l 物理CPU个数:
# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
14、每个物理CPU中Core的个数:
# cat /proc/cpuinfo | grep "cpu cores" | wc -l 15、是否为超线程?如果有两个逻辑CPU具有相同
的”core id”,那么超线程是打开的。每个物理CPU中逻辑CPU(可能是core, threads或both)的个数: # cat /proc/cpuinfo | grep "siblings"
1.查看CPU信息命令 cat /proc/cpuinfo
2.查看内存信息命令 cat /proc/meminfo
3.查看硬盘信息命令 fdisk -l
cat /etc/issue 系统版本
netstat -anp 显示系统端口使用情况
lsof -i :端口 显示占用该端口的进程情况
uname -a 内核信息
cat /proc/interrupts 显示中断信息
linux禁ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
将其值改为1后为禁止PING
将其值改为0后为解除禁止PING
查找安装位置
rpm -qa
之后根据这个名字
rpm -ql XXXXX
就找到安装位置了.
uptime
13:05:52 up 53 days, 52 min, 1 user, load average: 0.00, 0.00, 0.00
CPU信息
cat /proc/cpuinfo
内存信息
cat /proc/meminfo
内存概况
free
监控
vmstat、vnstat、iostat、netstat、mpstat
sar
*top类: top, apachetop, mytop(mysql), mtop(mysql), iftop, iotop, htop, ntop, atop, innotop(mysql), slabtop, redesktop(远程桌面),
*stat类: iostat, vmstat, mpstat, vnstat, dstat, pidstat
前20个最大的文件 单位mb
du -Shm | sort -rn | head -20
进程打开文件(文件句柄)数倒序排
lsof -n|awk '{print $1"\t"$2}'|sort|uniq -c|sort -n