Nginx/Apache服务连接数梳理

原文:http://www.cnblogs.com/kevingrace/p/6211542.html

统计连接数,使用netstat命令或ss命令都可以
1)统计连接数(80端口)
[root@wang ~]# netstat -nat|grep -i "80"|wc -l
872

或者:netstat -ant | grep $ip:80 | wc -l 
[root@wang ~]# netstat -ant | grep 111.142.132.192:80 | wc -l 
872

2)查看当前并发访问数(统计已连接上的),状态为“ESTABLISHED”
[root@wang ~]# netstat -na|grep ESTABLISHED|wc -l
405

或者:
[root@wang ~]# netstat -ant | grep 111.142.132.192:80 | grep EST | wc -l

3)查看IP访问次数 
[root@wang ~]# netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n

查看ip连接数(成功连接上的)
[root@wang ~]# netstat -nat |grep ESTABLISHED | awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20

4)查看并发请求数(服务器连接数)及其TCP连接状态:
[root@wang ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
FIN_WAIT2 34
CLOSING 1
SYN_RECV 73
CLOSE_WAIT 9
TIME_WAIT 139
ESTABLISHED 302
LAST_ACK 7
FIN_WAIT1 11

结果解释: 
SYN_RECV          表示正在等待处理的请求数; 
ESTABLISHED     表示正常数据传输状态; 
TIME_WAIT         表示处理完毕,等待超时结束的请求数; 
FIN_WAIT1         表示server端主动要求关闭tcp连接; 
FIN_WAIT2         表示客户端中断连接; 
LAST_ACK         表示关闭一个TCP连接需要从两个方向上分别进行关闭,双方都是通过发送FIN来表示单方向数据的关闭,当通信双方发送了最后一个FIN的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(Fin的Ack确认)后才真正关闭整个TCP连接; 
CLOSING        表示两边同时尝试关闭

或者执行下面的命令:会出现一个界面,实时统计并发连接数和TCP连接数
[root@wang ~]# watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"

5)查找较多time_wait连接,降序排列
[root@wang ~]# netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

------------------------------------------------------------------------------------------------
上面是使用netstat命令进行统计查看的,也可以使用ss命令查看。
netstat和ss命令的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6211509.html
[root@wang ~]# ss -a|wc -l
746
[root@wang ~]# ss -a|grep ESTAB|wc -l
358
[root@wang ~]# ss -a|grep TIME-WAIT|wc -l
146

-----------------------------------------------------------------------------------------------
如发现系统存在大量TIME_WAIT状态的连接,该怎么办?
根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态下的socket不能被回收使用。具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务. TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证.

解决办法(参考:http://www.cnblogs.com/kevingrace/p/6094007.html):
通过调整内核参数解决,编辑/etc/sysctl.conf文件,添加下面四行内容:
[root@wang ~]# 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

配置说明:
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时间

让添加的参数生效
[root@wang ~]# /sbin/sysctl -p

(转)Nginx/Apache服务连接数梳理的更多相关文章

  1. Nginx/Apache服务连接数梳理

    统计连接数,使用netstat命令或ss命令都可以1)统计连接数(80端口)[root@wang ~]# netstat -nat|grep -i "80"|wc -l872 或者 ...

  2. Nginx最大客户连接数算法一些遐想

    Nginx最大客户连接数算法一些遐想 现在很多互联网公司都在使用nginx,并且替换掉以前的Apache,nginx的优点就不说了,浅聊两句nginx的某些配置参数,找到这些参数设置的目的和关联性,并 ...

  3. 八.nginx网站服务实践应用

    期中集群架构-第八章-期中架构nginx章节====================================================================== 01. web ...

  4. Nginx web服务优化 (一)

    1.Nginx基本安全优化 a.更改配置文件参数隐藏版本 编辑nginx.conf配置文件增加参数,实现隐藏Nginx版本号的方式如下.在nginx配置文件nginx.conf中的http标签段内加入 ...

  5. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  6. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  7. 根据参数优化nginx的服务性能

    一.优化nginx服务的worker进程数 在高并发.高访问量的Web服务场景,需要事先启动好更多的nginx进程,以保证快速响应并处理大量并发用户的请求. 1).优化nginx进程对应的配置 优化n ...

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

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

  9. Nginx网站服务

    1.常见的网站服务 静态网站服务: Apache服务 nginx服务 动态网站服务: Tomcat服务 PHP 2.nginx网站服务特点 (1)nginx具有高并发(特别是静态资源).占用系统资源少 ...

随机推荐

  1. 勤于思考:IE10不支持检测IE6的代码

    这句话 var isIE6 = isIE && ([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 6); 在IE6~9都没问题 ...

  2. Early Media and Music on Hold

    Early media refers to any media that is played to the initial caller’s phone before the remote party ...

  3. 华为USG6500系列

    华为USG6500: ssh 登录配置 time-range 相关配置:<USG6000V1>system-view Enter system view, return user view ...

  4. EntityFramework Code First 构建外键关系,数据库不生成外键约束

    创建 ExtendedSqlGenerator类 public class ExtendedSqlGenerator : SqlServerMigrationSqlGenerator { #regio ...

  5. poj2182Lost Cows——树状数组快速查找

    题目:http://poj.org/problem?id=2182 从后往前确定,自己位置之前没有被确定的且比自己编号小的个数+1即为自己的编号: 利用树状数组快速查找,可另外开一个b数组,角标为编号 ...

  6. SQL SERVER 判断是否存在数据库、表、列、视图

    SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名 ...

  7. c# namespace不能和class的name 相同

    比如namespace A, 内部Class A, 那么调用class A的方法只能通过A.A.XXX来访问. 或者说实例化一个class A,  A a = new A(); // compile ...

  8. Behave + Selenium(Python) 四

    来自T先生 今天我们开始讲讲behave的厉害的地方. Tag文件的使用 在behave里面,如何来控制哪些case需要run,哪些case不需要run,这个时候就用Tag来控制.好了,接下来我用Ta ...

  9. openstack官方指导书

    openstack官方网站:https://docs.openstack.org/ 由于openstack的官方文档有点多,所以这里对其进行梳理一下 Release Notes 发布版本 新功能,升级 ...

  10. day1 java基础回顾-IO流

    IO流的分类 注:这几个类都是抽象类. IO解决问题: 解决设备与设备之间 的数据传输问题. 比如: 硬盘--->内存 内存----->硬盘 字节流: 输入字节流:---------| I ...