Chinaunix首页 | 论坛 | 博客
  • 博客访问: 999880
  • 博文数量: 116
  • 博客积分: 3758
  • 博客等级: 中校
  • 技术积分: 1316
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 11:49
个人简介

这家伙很懒。。。

文章分类

全部博文(116)

文章存档

2016年(3)

2015年(2)

2014年(1)

2013年(9)

2012年(25)

2011年(50)

2010年(12)

2009年(14)

分类: LINUX

2009-10-16 11:04:41

1)列出的是所有连接

 netstat -tun

2)列出的是apache所有连接
 netstat -tun | grep ":80"

3)统计80端口连接数
 
  netstat -nat|grep-i"80"|wc -l


 
4)统计httpd协议连接数
 
  ps -ef|grep httpd|wc -l


 
5)统计已连接上的,状态为“established'
 
 netstat -na|grep ESTABLISHED|wc -l


 
6)查出哪个IP地址连接最多,将其封了
netstat -na|grep ESTABLISHED|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-r+0n

netstat -na|grep SYN|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-r+0n

7)查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):

ps -ef | grep httpd | wc -l

8)查看Apache的并发请求数及其TCP连接状态:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
或者 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

说明:  
SYN_RECV: 表示正在等待处理的请求数;
ESTABLISHED: 表示正常数据传输状态;
TIME_WAIT: 表示处理完毕,等待超时结束的请求数
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决
vim /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。

net.ipv4.tcp_syncookies = 1 表示开启SYN cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间

下面附上TIME_WAIT状态的意义:

客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口
状态为TIME_WAIT

是不是所有执行主动关闭的socket都会进入TIME_WAIT状态呢?
有没有什么情况使主动关闭的socket直接进入CLOSED状态呢?

主动关闭的一方在发送最后一个 ack 后
就会进入 TIME_WAIT 状态 停留2MSL(max segment lifetime)时间
这个是TCP/IP必不可少的,也就是“解决”不了的。

也就是TCP/IP设计者本来是这么设计的
主要有两个原因
1。防止上一次连接中的包,迷路后重新出现,影响新连接
(经过2MSL,上一次连接中所有的重复包都会消失)
2。可靠的关闭TCP连接
在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发
fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以
主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。

TIME_WAIT 并不会占用很大资源的,除非受到攻击。

还有,如果一方 send 或 recv 超时,就会直接进入 CLOSED 状态

 

 

阅读(1250) | 评论(1) | 转发(0) |
0

上一篇:linux虚拟机添加硬盘

下一篇:linux scp 命令

给主人留下些什么吧!~~

chinaunix网友2010-01-23 16:41:56

netstat -an|grep SYN|wc -l