Octavia访问频繁引起SYN洪泛的分析与解决

博客详细记录了如何排查并解决Octavia-API进程因TCP SYN洪水攻击而卡死的问题。通过gdb定位代码、dmesg日志分析、strace系统调用跟踪及netstat和ss命令检查连接状态,发现是监听套接字的backlog设置过小。解决方案是增大backlog值,避免SYN队列溢出,同时建议优化API设计以降低并发负载,并关注系统级的TCP连接参数设置。

1. 问题

octavia-api进程跑一会就卡死,api无响应,telnet也无响应

2. 排查

思路主要是

  • 查应用代码
  • 查系统日志得出触发了syn flooding
  • 根据tcp/socket知识找到问题原因

2.1. gdb定位下代码卡在哪里

(gdb) py-list
 442
 443                buf.seek(0, 2)  # seek end
 444                self._rbuf = StringIO()  # reset _rbuf.  we consume it via buf.
 445                while True:
 446                    try:
>447                        data = self._sock.recv(self._rbufsize)
 448                    except error, e:
 449                        if e.args[0] == EINTR:
 450                            continue
 451                        raise
 452                    if not data:

(gdb) py-bt
    self.process_request(request, client_address)
#32 Frame 0x7fd926f4de18, for file /usr/lib64/python2.7/SocketServer.py, line 238, in serve_forever (self=<WSGIServer(RequestHandlerClass=<classobj at remote 0x7fd931382598>, base_environ={'CONTENT_LENGTH': '', 'SERVER_NAME': 'controller1', 'GATEWA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值