有些乱 , 主要是备份一下自己维护期间常用命令
- 将请求80服务的client ip按照连接数排序
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
- 查看是否遭受ddos攻击
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
- 分析哪种tcp状态数量异常
netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
- 查看php-fpm数量
ps -ef | grep php-fpm | wc -l
- 统计httpd进程数,连个请求会启动一个进程
ps -ef | grep httpd | wc -l
- 当前所有80端口的请求总数。
netstat -nat | grep -i 80 | wc -l # netstat -an会打印系统当前网络链接状态,而grep -i 80 是用来提取与80端口有关的连接的, wc -l进行连接数统计。
- 当前所有80端口的已建立连接的总数
netstat -na|grep ESTABLISHED|wc -l # netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。最终返回的数字就是当前所有80端口的已建立连接的总数
- 查看常用参数状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 返回结果
LAST_ACK 13
SYN_RECV 14
ESTABLISHED 702
FIN_WAIT1 62
FIN_WAIT2 238
CLOSING 1
SYN_SENT 1
TIME_WAIT 1988
- SYN_RECV表示正在等待处理的请求数
- ESTABLISHED表示正常数据传输状态
TIME_WAIT表示处理完毕,等待超时结束的请求数。
解决linux下大量的time_wait问题
vim /etc/sysctl.conf
#减少TIME_WAIT,提高TCP效率
net.ipv4.tcp_tw_recyle=1
net.ipv4.tcp_tw_reuse=1
#减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接
net.ipv4.tcp_fin_timeout=2
#减少TCP KeepAlived连接侦测的时间,使系统可以处理更多的连接。
net.ipv4.tcp_keepalived_time=600
#提高系统支持的最大SYN半连接数(默认1024)
net.ipv4.tcp_max_syn_backlog = 16384
#减少系统SYN连接重试次数(默认5)
net,ipv4.tcp_synack_retries = 1
net.ipv4.tcp_sync_retries = 1
#在内核放弃建立的连接之前发送SYN包的数量
net.ipv4.ip_local_prot_range = 4500 65535
#允许系统打开的端口范围
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,表示关闭。