您好,欢迎来到站长目录(28sn.com)!


http并发和tcp连接数的监控与调优

来源:网络整理 浏览:245次 时间:2021-03-01

在网站访问慢的时候,要能迅速查找慢的原因,这其中,检查web状态至关重要,web状态是指目前网站的并发数、等待数、QPS/TPS等信息,如何获取这些状态信息呢,需要使用多个命令组合来完成,这里就web日常运维中经常用到的一些命令和组合分享给大家,作为调优依据。

1、查看TCP连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
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]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
上面这些命令的输出内容大致一样,只是输出方式不同而已,各取所好即可。例如:
[root@test ~]# netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
1739 ESTABLISHED
159 TIME_WAIT
7 FIN_WAIT1
2 LAST_ACK
2 CLOSE_WAIT
1 SYN_RECV
从输出可以看到,这些都是TCP的连接状态,第一列输出的是每个连接状态的目前连接数量,第二列对应的是目前的TCP连接状态。那么重点要注意的是TIME_WAIT,这个TIME_WAIT是指在四次挥手过程中,首先调用关闭连接发起的一方,在发送最后一个ACK之后就会进入TIME_WAIT的状态,过多的TIME_WAIT连接,有什么坏处呢,我们来解释一下:
在高并发短连接的TCP服务器上,当服务器处理完请求后,会立刻主动正常关闭连接,此时就会出现大量socket处于TIME_WAIT状态,如果客户端的并发量持续增高,此时部分客户端就会显示连接不上服务器,为什么呢,因为服务器端资源用完了。这里的资源主要指服务器临时连接端口。
服务器可用的端口有个0~65535这么多,其实这真的很少,再刨除系统和其他服务要用的,剩下的就更少了。而高并发短连接场景可以让服务器在短时间范围内同时占用大量端口。
举个例子:
比如访问一个web页面,一秒钟的http短连接处理完成后,在关闭连接之后,这个业务用过的端口会停留在TIME_WAIT状态几分钟,而这几分钟,其它HTTP请求过来的时候是无法占用此端口的(典型的占着茅坑不。。。)。如果此时监控服务器的利用率会发现,服务器干正经事的时间和端口(资源)被挂着无法被使用的时间比例是1比几百,这就导致服务器资源严重浪费。
所以,过多的TIME_WAIT严重影响业务的正常运行。

2、查找较多TIME_WAIT、SYN连接的IP
这个命令比较常用,命令组合如下:
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
例如:
[root@localhost ~]# netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
1 94.191.97.234:64866
1 94.191.93.141:57715
1 94.191.91.162:54785
还可以使用这个命令组合:
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
例如:
[root@localhost ~]# netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
2 60.190.233.106
2 39.179.58.66

3、用tcpdump嗅探80端口看看哪个IP访问最频繁
通过tcpdump命令集合awk过滤来实现:
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -n 20
来看个例子:
[root@test ~]# tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -n 20
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
1000 packets captured
1000 packets received by filter
0 packets dropped by kernel
290 IP 183.215.254.13
264 IP 111.39.161.182
251 IP 211.143.17.76

4、查找请求数请10个IP
这个命令组合常用来查找网站攻 击来源IP,命令如下:
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n10
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n10
这个命令最经常使用,特别是当网站访问量莫名升高的时候,例如:
[root@test ~]# netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n5
124 27.148.154.216
85 27.148.154.162
82 27.148.154.217
81 27.148.154.159
78 221.235.244.60

5、查看有哪些爬虫在抓取我的网站
这个命令也非常有帮助,因为有时候大量爬虫,特别是流氓爬虫来爬取网站的时候,会占用大量服务器资源,针对这种情况,必须禁止这些爬虫的爬取:
tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'
例如:
[root@test ~]# tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
User-Agent: Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
从输出可看出,有百度、bing等爬虫目前再爬我的网站。

6、获取访问次数最多的文件或页面,取前10
先来看个例子:
[root@test logs]# cat miivey_access.log |awk '{print $11}'|sort|uniq -c|sort -nr|head -n 10
12817067 "http://www.abc.com/"
1279583 "http://www.abc.com/cn/"
387843 "http://www.habcd.com/"
335286 "http://www.abc.com/cn/m/index.html"
这个命令组合主要是读取日志文件,然后获取访问量最高的文件或页面。

7、统计http连接状态
首先统计出日志中所有的连接状态码,以及每个状态码的数量:
[root@test logs]# cat miivey_access.log |awk '{print $9}'|sort|uniq -c|sort -rn
457030 200
17035 404
2189 304
1953 499
426 405
可以看出,状态码为200的数量有457030个,状态码为404的数量为17035,也非常多,这么多的404状态,肯定会对网站有影响,那么接下来就看看就有哪些404页面:
[root@test logs]# awk '($9 ~/404/)' miivey_access.log | awk '{print $9,$7}' | sort
404 /zzb.php
404 //zzk.aspx
404 //zzk.aspx
404 //zzk.aspx
404 //zzk.aspx
这个命令组合中,主要是扑获访问出现404状态的页面是哪些,从输出可以看到哪些页面是404,找到了具体的页面,就可以进行具体的处理了。

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net
  • 今题网今题网

     今题网- 中国领先的社区服务网,提供社区服务, 在线交友和商家推广服务,于2004年创建上线,公司现有员工超过百名。今题网自成立以来,凭借其独特的定位和丰富的社区交友功能, 凭借其团队超强的搜索引擎优化技术吸引超过千万的用户成为今题网的注册会员。

    www.jinti.com

鄂公网安备 42062502000001号