Linux OS||不响应SYN总结

简介: 背景 对外提供TCP服务的进程,在压测时发现,TCP连接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、协议栈异常;尝试初始化。

最后那三板斧

1、协议栈跟踪,参考
2、程序跟踪和抓包,参考


附录

针对问题: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

目录
相关文章
|
1月前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
139 10
|
2月前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
89 7
|
2月前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
121 6
|
2月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
2月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
152 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
4月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
186 4
|
4月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
155 0
Vanilla OS:下一代安全 Linux 发行版
|
4月前
|
人工智能 安全 Linux
|
5月前
|
安全 搜索推荐 Ubuntu
|
5月前
|
Unix 物联网 大数据
操作系统的演化与比较:从Unix到Linux
本文将探讨操作系统的历史发展,重点关注Unix和Linux两个主要的操作系统分支。通过分析它们的起源、设计哲学、技术特点以及在现代计算中的影响,我们可以更好地理解操作系统在计算机科学中的核心地位及其未来发展趋势。

热门文章

最新文章