一、netstat的使用
1、查看当前监听的端口状态
netstat -s|egrep 'listen|LISTEN'
2、查看当前tcp连接的汇总数据
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
#仅查看Established的数量 netstat -na|grep ESTABLISHED|wc -l
#监听3306端口的情况 watch "netstat -t -n | grep 3306 | grep -oP '\w+\s*$' | sort | uniq -c"
#监听mysql netstat -paut|grep mysql
#动态查看当前tcp连接的进程 netstat -p -tcp
二、系统参数配置
1、 /proc/sys/net/ipv4/tcp_abort_on_overflow
默认为0表示如果三次握手第三步的时候全连接队列满了那么server扔掉client 发过来的ack(在server端认为连接还没建立起来)
2、/proc/sys/net/ipv4/tcp_max_syn_backlog
进入SYN包的最大请求队列,默认1024,对重负载服务器,需增加该值。linux2.2之后握手过程分为syn queue和accept queue两个队列, syn queue长度由tcp_max_syn_backlog决定。
修改参数命令如下:
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
3、/proc/sys/net/core/somaxconn
定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128。
4、/proc/sys/net/ipv4/tcp_max_tw_buckets
默认值为5000,系统同时处理TIME_WAIT sockets数目。如果一旦TIME_WAIT tcp连接数超过了这个数目,系统会强制清除并且显示警告消息。设立该限制,主要是防止那些简单的DoS攻击,加大该值有可能消耗更多的内存资源。如果TIME_WAIT socket过多,则有可能耗尽内存资源。可以将此值设置为5000~30000。
5、/proc/sys/net/ipv4/ip_local_port_range
定义了本地tcp/udp的端口范围。可以理解为系统中的程序会选择这个范围内的端口来连接到目的端口(目的端口当然是用户指定的)。
6、/proc/net/sockstat(ipv4)
sockets: used:已使用的所有协议套接字总量 TCP: inuse:正在使用(正在侦听)的TCP套接字数量。其值≤ netstat –lnt | grep ^tcp | wc –l TCP: orphan:无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数) TCP: tw:等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l TCP:alloc(allocated):已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l TCP:mem:套接字缓冲区使用量(单位不详。用scp实测,速度在4803.9kB/s时:其值=11,netstat –ant 中相应的22端口的Recv-Q=0,Send-Q≈400) UDP:inuse:正在使用的UDP套接字数量 RAW: FRAG:使用的IP段数量
若查看ipv6为:/proc/net/sockstat6
7、ulimit-n
查看当前用户允许TCP打开的文件句柄最大数。对应的文件配置句柄:
vim /etc/security/limits.conf
三、ss的使用
1、ss -lnt
2、查看3306端口号的使用情况
ss -pnt dport = :3306ss -pnt '( dst :3306 )'
四、查看进程&文件打开
1、lsof -i
lists open files,列出打开文件。-i表示显示所有连接。
2、查看进程
3、ps -ef|wc -l
查看后台运行的进程总数
五、tcpdump抓包
1、指定目标端口号
tcpdump tcp port 3306
2、指定目标ip
tcpdump host 115.28.132.204