netstat命令

netstat命令使用总结mysql

做用:

显示网络链接,端口,路由表,接口状态。通常用于查看本机各个端口的网络链接情况sql

语法参数:

netstat [options]缓存

options参数

参数bash

含义服务器

解释cookie

-r网络

--route并发

显示路由表ssh

-lsocket

--listensing

显示正在监听的socket

-a

all

显示全部正在监听和非监听的socket

-n

numeric

显示数字IP地址(默认主机名)

-t

TCP

显示tcp协议的链接状况

-u

udp

显示UDP协议的链接状况

-s

statistics

显示网络统计

-p

--programs

显示监听的socket进程

网络链接状态

状态

说明

LISTEN

监听来自对端的TPC端口的链接请求

SYN_SENT

发送链接请求后等待匹配的链接请求(尝试创建一个链接)

SYN_RECEIVED

再收到和发送一个链接请求后等待对方对链接请求的确认

ESTABLISHED

表明一个打开的链接(已创建的链接)

FIN_WAIT1

等待远程TCP链接中断请求,或先前的链接中断请求的确认

FIN_WAIT2

从远程TCP等待链接中断请求

CLOSE_WAIT

等待从本地用户发来的链接中断请求

CLOSING

等待远程TCP对链接中断的确认

LAST_ACK

等待原来的发向远程TCP的链接中断请求的确认

TIME_WAIT

等待远程TCP接收到链接中断请求的确认(系统在等待客户端的响应)

CLOSED

没有任何链接状态

说明:上面每一种链接状都是一个并发


具体应用实例

查看全部链接

[root@localhost ~]# netstat an

查看全部tcp和udp的链接

[root@localhost ~]# netstat -tunl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::80                       :::*                        LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
udp        0      0 0.0.0.0:68                  0.0.0.0:*
输出内容讲解 
Proto 协议使用的协议 
Recv-Q 
Send-Q 
Local Address 本地的IP及端口 
Foreign Address 本地链接远端的IP及端口 
State 网络状态

查看ssh监听的端口

[root@localhost ~]# netstat -anput | grep ssh
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1359/sshd           
tcp        0     52 192.168.254.10:22           192.168.254.19:63759        ESTABLISHED 1514/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1359/sshd

生产案例:链接数

(1)、查看当前系统的链接数(已链接的)

[root@localhost ~]# netstat -an |awk 'BEGIN {FS=":"} /ESTABLISHED/ {print$4":"$5"\t"$8}' |sort |uniq -c |sort -rn |head -5 
5 172.16.123.177:80 119.102.6.54 
2 192.168.123.17:22177 192.168.123.10 
2 172.16.123.177:80 121.207.208.40 
2 172.16.123.177:80 117.136.16.197 
2 172.16.123.177:80 110.90.250.8 
说明:找出网络状态为ESTABLISHED已链接的前五个IP地址

(2)、生产案例:查看当前系统的TIME_WAIT链接(等待的链接,没有被释放,网站访问慢的缘由)(重点)

 [root@localhost ~]# netstat -an |awk 'BEGIN{FS=":"} /TIME_WAIT/ {print $4":"$5"\t"$8}' |sort|uniq -c |sort -rn |head -5 
3 172.16.123.177:80 117.136.15.108 
 
2 172.16.123.177:80 211.137.59.23 
2 172.16.123.177:80 117.136.25.141 
1 172.16.123.177:80 183.213.18.83 
1 172.16.123.177:80 125.39.239.221 
注意:httpd服务和mysqld等都会有链接状态,经过本地端口区分,都会致使网站访问慢的缘由
说明:TIME_WAIT状态是等待客户端的响应,这种等待会占用链接数,致使网站访问慢

(3)、优化TIME_WAIT(内核优化参数)

说明:TIME_WAIT若是时间比较大,该链接没有被释放,快速回收不提供服务链接出现过多TIME_WAIT链接,清理没有被释放的TIME_WAIT链接

提示:链接数超过五千,可能就没法提供服务了,将某个IP大于50个就使用防火墙给干掉,正常状况下一个客户端不会超过10个

net.ipv4.tcp_fin_timeout = 2 
#→表示若是套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
 
net.ipv4.tcp_tw_reuse = 1 
#→表示开启重用。容许将TIME-WAIT sockets从新用于新的TCP链接,默认为0,表示关闭。 
 
net.ipv4.tcp_tw_recycle = 1 
#→表示开启TCP链接中TIME-WAITsockets的快速回收,默认为0,表示关闭。

提示:以上两个参数为了防止生产环境下 time_wait过多设置的。

 

控制TIME_WAIT的数量

若是设置了,服务器超过了这个数量,日志中会提示警告,默认是180000 
生产案例:蓝讯CDN缓存服务器生产环境使用的内核参数(提供缓存的服务器)
[root@CNC-BJ-H-388 ~]# sysctl -p |grep net.ipv4 
net.ipv4.ip_forward = 0 
net.ipv4.conf.default.rp_filter = 1 
net.ipv4.conf.default.accept_source_route = 0 
net.ipv4.tcp_max_tw_buckets = 1800000 
net.ipv4.tcp_max_syn_backlog = 8192 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_retries1 = 22 
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_max_syn_backlog = 8192 
net.ipv4.tcp_fin_timeout = 10 
net.ipv4.tcp_synack_retries = 3 
net.ipv4.tcp_syn_retries = 3
相关文章
相关标签/搜索