5nM9!A\D
p5# P
r
Jn@Mbl
今天发现网站特别卡!! {Fp`l\,
0O['-x
$L&9x3+?Kg
查看网络连接数: J,0WQQnb
X?v^>mA
7ru9dg1?
netstat -an |wc -l =y-!k)t
2c>H(t h=
[>M*_1F
netstat -an |grep xx |wc -l 查看某个/特定ip的连接数 z^a!C#IX
6PQJgki
++Ys9Y)*,
netstat -an |grep TIME_WAIT|wc -l 查看连接数等待time_wait状态连接数 ej"o?1l@
O2'bNR
A"bSNHCKF
netstat -an |grep ESTABLISHED |wc -l 查看建立稳定连接数量 @cS1w'=
z"s%#/#
9HJ'p:{)
Oj4u!SY\j
R!_8jD:$
G1?0Q_RN
查看不同状态的连接数数量 N)vk0IM!
* Y%<b86U
MR?*GI's
[root@cp-nginx ~]# netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}' Uaus>Frx.T
4[LLnF--
!sfXq"F
LISTEN 8 $TD~k;
7g A08M[O
|2
YubAIZ(
ESTABLISHED 2400 XSm"I[.g
eq@am(#&kY
Hhe{ +W@~
FIN_WAIT1 2 u0bfX,e2U
bH\'uaJ
fBf4]^
TIME_WAIT 6000 P"(z jG9-
8)^B32
g$*/XSr(
@~m=5C
fD1?z"lo
Ds%9cp*6
查看每个ip跟服务器建立的连接数 X+=-f^)&
-PNi^
K_
NH7`5mF$
[root@cp-nginx ~]# netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn Z[",$Lt
(GCG/8s
y }\r#"Z`
31 45.116.147.178 sX+`wc
z{ptm7
ev9;Ld
20 45.116.147.186 Pm4e8b
qAoAUDm
vxZg &SRK
12 23.234.45.34 R {HV]o|qk
AXs=1 e
; e@gO
11 103.56.195.17 z
v>Oh#
+b^]Pz5
Hou*lCA
(PS:正则解析:显示第5列,-F : 以:分割,显示列,sort 排序,uniq -c统计排序过程中的重复行,sort -rn 按纯数字进行逆序排序) (Yv{{mIy
ow$q7uf
K UKACUL
d+;gw*_Ei
LXj5R99S
|~WYEh
查看每个ip建立的ESTABLISHED/TIME_OUT状态的连接数 Q$~n/
!SO8O
D8%AV;-Y
[root@cp-nginx ~]# netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn T dk
,&8
0w %[
&fwS{n;U
24 103.56.195.17 x&Cp> +i
=wG+Ao
bl;zR
19 45.116.147.186 @*>Sw>oet
S QY"OBo<e
I7n3xN&4"
18 103.56.195.18 k`\R+WK$
"5Uh<X
g5Z#xszj+
17 45.116.147.178 *|% ^0#$c
=JS;;PzX[
+nL+N
$HJTj29/
FT.,%2
&a,OfSz
r?/A?DMe
'heJ"k?
6w[}&pX"z
解决time_wait连接数大量问题 N8r*dadDd
L!Cz'm"Nl
. @q-B+Eg
查询到time_wait连接数过多情况下,调整内核参数:/etc/sysctl.conf 8.J(r(;>
)E#2J$TD
Z?P~z07
vim /etc/sysctl.conf
+=q)
iIT8H\e
D]a:@x`+Bz
6qWdd&1
h^9"i3H
K;hh&sTB
添加以下配置文件: }?F`t[+
i,A#&YDl
u]NZ`t%AP
net.ipv4.tcp_syncookies = 1 `@d<n
net.ipv4.tcp_tw_reuse = 1 znJhP}(
net.ipv4.tcp_tw_recycle = 1 &8&d3EQ
net.ipv4.tcp_fin_timeout = 300 R[z`:1lo
J:uW`R
sDr/k`>
5uq3\a
ETp%s{8
alh >"9~!
/sbin/sysctl -p 让参数生效,调优完成 -<jL~][S
[7(-T?_
L9pvG(R%
h)~=Dm
!O\;Nua
e%8|<g+n6
参数详解: {G <kA(Lm
Rqwzh@}
#r
PP*
1.net.ipv4.tcp_syncookies = 1 表示开启 syn cookies 。当出现 syn 等待队列溢出时,启用 cookies 来处理,可防范少量 syn ***,默认为 0 ,表示关闭; tm7u^9]
dU\%Cq-G)
UhIDRR
2.net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将 time-wait sockets 重新用于新的 tcp 连接,默认为 0 ,表示关闭; #:T-hRu
3.net.ipv4.tcp_tw_recycle = 1 表示开启 tcp 连接中 time-wait sockets 的快速回收,默认为 0 ,表示关闭。 zP6.xp3
4.net.ipv4.tcp_fin_timeout 修改系靳默认的 timeout 时间 pP(XIC
R/"x}B1d
WyP W*
Ltjbxw"Qd
D&HV6#
p4p@^@<>X
经过上面的设置后,发现网站time_wait连接数慢慢减少,网站速度也快多了! nx0K$Ptq
8w({\=
V.wqZ {G
如果以上配置调优后性能还不理想,可继续修改一下配置: Qp`gswvE
ccd8O{G.M
4Jx"A\5*G
vi /etc/sysctl.conf 9W5onn
u{["50~
y\{%\ $
net.ipv4.tcp_keepalive_time = 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。 .jMq
+**!@uY
JmEj{K<3I
net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。 q\H[am
?)e37
<]G]W/eB'
net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。 D-N8<:cA
" LJq%E
%6_AM
net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。 o6//IOZ
默认为180000,改为5000。 wb~@7,D
对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。