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

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

被折叠的 条评论
为什么被折叠?



