Linux OS||不响应SYN总结
对外提供TCP服务的进程,在压测时发现,TCP连接SYN响应慢,甚至不响应。导致无法正常接收新的请求,影响业务。
抓包分析:
如上有大量的重传,有时能够正常的响应请求,有时就无法响应请求。
排查思路1、系统负载是否过高
2、是否有安全软件(比如安全狗,安骑士等)
3、是否开启防火墙
4、Snat问题
5、TCP相关参数:net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等
6、系统最大文件打开数是否有限制
7、进程最大文件打开数是否有限制
8、业务程序是否有相关的安全限制
9、协议栈异常
10、网络安全设备原因
12月2日增加:
1、由于服务端收包时checksum错误,内核会默认丢弃该报文;
[root@xxxx ~]# netstat -s | grep -i sum InCsumErrors: 105 InCsumErrors: 32
2、列队满了
[root@xxxxx ~]# ss -tanl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:*
其中Recv-Q表示当前accept queue中的连接数量,Send-Q表示accept queue的最大长度。如上:可以看到进程的accept queue默认是128,因为受到系统net.core.somaxconn=128的限制。
根据排查思路中的几个关键点,进行逐一仔细确认:
1、检查系统负载是否正常
2、是否有安全软件:关闭安骑士服务,检查系统进程是否有其他安全软件进程
3、关闭系统防火墙:排除由于防火墙安全配置导致的问题。
4、Snat问题:根据问题环境判断,是否有该问题,如有根据案例方式处理。
5、检查TCP相关参数:调大相关参数:
net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等
6、系统最大文件打开数是否有限制:
[root@xxxx ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3895 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 3895 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [root@xxxx ~]#
主要关注open files信息
7、查看进程最大文件打开数限制
[root@XXXXXX ~]# ps -ef | grep nginx root 4867 1 0 Apr20 ? 00:00:00 nginx: master process /usr/sbin/nginx nginx 4868 4867 0 Apr20 ? 00:00:00 nginx: worker process root 20159 20105 0 09:59 pts/0 00:00:00 grep --color=auto nginx [root@XXXXXX ~]# cat /proc/4868/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 3895 3895 processes Max open files 1024 4096 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 3895 3895 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us [root@XXXXXXX ~]#
进程的调整方法:
echo -n Max open files=10000:10000 /proc/3622/limits
如果上述方法无法使用,或者不生效,则:
写一个简单的shell,在里面启动命令之前写入 ulimit -n 然后写入启动命令。 测试启动没有问题后,执行脚本观察下。
prlimit要2.6.36版本+才行
http://xiezhenye.com/tag/prlimit
8、业务程序是否有相关的限制(联系用户确认)
9、协议栈异常;尝试初始化。
最后那三板斧针对问题:TCP连接失败
分析:netstat -s输出中和连接失败相关的参数
`202270382 invalid SYN cookies received
--- 三次握手ack包,syncookies校验没通过;
13700572 resets received for embryonic SYN_RECV sockets
---syn_recv状态下,收到非重传的syn包,则返回reset
1123035 passive connections rejected because of time stamp
---开启sysctl_tw_recycle,syn包相应连接的时间戳 小于 路由中保存的时间戳;
14886782 failed connection attempts
--- syn_recv状态下,socket被关闭; 或者 收到syn包(非重传)
438798 times the listen queue of a socket overflowed
---收到三次握手ack包,accept队列满
438798 SYNs to LISTEN sockets ignored
---收到三次握手ack包,因各种原因(包括accept队列满) 创建socket失败`
注:转载至:http://blog.sina.com.cn/s/blog_781b0c850101pu2q.html
枫凡 专注于云计算相关的安全问题以及网络问题。坚信: ldquo;不忘初心,方得始终 rdquo;
阿里云支持与服务 2134 作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
相关文章
- linux 将一个服务器上的文件或者文件夹复制到另一台服务器上
- Linux&Tina&Melis内存布局分析以及linux reserved memory机制
- STM32MP157 Linux系统移植开发篇1:linux系统移植前说明及源码编译
- 设计师的 Linux 桌面发行版 elementary OS
- Shell入门:掌握Linux,OS X,Unix的Shell环境
- linux学习-Linux系统启动过程
- 用navicat访问linux数据库,成功实现Navicat访问Linux中安装的MySQL数据库
- 中国Linux云计算行业发展前景及趋势分析
- 【Linux】linux ln文件夹的链接(转)
- 《嵌入式Linux开发实用教程》——1.3 arm-linux交叉编译链
- rabbitmq在linux下单节点部署和基本使用
- telnet- Linux必学的60个命令
- Linux 调试之 TRACE_EVENT(二)
- [PHP]关于如果你的环境是LINUX且恰好你的PHP是7同时你又不是编译的PHP源代码那你的mysql该怎么他妈链接这件事?
- Linux 如何将linux主机变为路由器&&iptables的基本用法
- Linux学习---linux下的彩蛋和各种有趣的命令
- 如何在Linux系统上安装VMware Workstation Pro 12虚拟机
- Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6)
- Linux学习笔记(2)linux系统信息与进程相关命令
- Linux学习笔记(1)linux的开关机及重启