阅读187 返回首页    go 阿里云 go 技术社区[云栖]


Linux OS||Services不响应SYN总结

背景

对外提供TCP服务的进程,在压测时发现,TCP连接SYN响应慢,甚至不响应。导致无法正常接收新的请求,影响业务。

抓包分析: 
de089bf8b9eea311dd1cf971624cdbf7b94e9dc9

c1ca68e268bdb792bb818bda0540c93e4539e63a

989252f5fb5b5509f3892d5a8d544cbd84fb572d

61e7b259b1f6f8d7611beddee5b3ce9db465fe15


如上有大量的重传,有时能够正常的响应请求,有时就无法响应请求。

排查思路

1、系统负载是否过高

2、是否有安全软件(比如安全狗,安骑士等)

3、是否开启防火墙

4、物理机是否有争抢

5、Snat问题 

6、TCP相关参数:net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等

7、系统最大文件打开数是否有限制

8、进程最大文件打开数是否有限制

9、业务程序是否有相关的安全限制

10、协议栈异常

11、网络安全设备原因

排查过程

根据排查思路中的几个关键点,进行逐一仔细确认:

1、检查系统负载是否正常

2、是否有安全软件:关闭安骑士服务,检查系统进程是否有其他安全软件进程

3、关闭系统防火墙:排除由于防火墙安全配置导致的问题。

4、检查物理机负载情况,是否有争抢。

5、Snat问题:根据问题环境判断,是否有该问题,如有根据案例方式处理。

6、检查TCP相关参数:调大相关参数:

net.ipv4.tcp_max_syn_backlog\net.ipv4.tcp_syncookies\fs.file-max等

7、系统最大文件打开数是否有限制:

[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信息

8、查看进程最大文件打开数限制

[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

prlimit要2.6.36版本+才行

https://xiezhenye.com/tag/prlimit

9、业务程序是否有相关的限制(联系用户确认)

10、协议栈异常;尝试初始化。

最后更新:2017-05-15 10:01:53

  上一篇:go  "永恒之蓝"勒索病毒凶猛 周一上班请用正确姿势打开电脑
  下一篇:go  跨地域的VPC私网互通【高速通道案例】