AD自动保持长连接导致无法正常关闭http连接
  

ipluto 8214

{{ttag.title}}
本帖最后由 ipluto 于 2019-5-16 10:03 编辑

问题描述:
    客户连接我司服务经常出现超时。

排查过程:
    在客户端抓包发现大量端口复用的包,由于客户业务复杂,既是服务端也是客户端。导致端口占用严重。2分钟左右会复用端口。
    在ad抓包有收到客户端的复用端口连接的syn请求。但ad不回应请求。由某公司工程师分析发现复用端口的的原连接在ad并未释放,依然处于ESTABLISHED状态,导致同样五元组的报文到达后,ad认定为异常包,不处理。

    分析报文发现客户通知ad关闭连接,但ad不回应。工程师给出原因是由于客户端同时发送ssl close notfiy与tcp fin。导致ad不能正常处理关闭流程,而客户端在发送请求后进入fin wait,在fin wait超时(客户端为20秒)后释放链接。
    工程师给出两个解决方案:
    1、修改七层虚拟服务TCP策略,将超时时间修改成1分钟。到达超时时间后ad发送keepalive包,如客户端不回应,ad关闭连接。
    2、打补丁包。使ad回应关闭消息。
    与开发一起分析发现服务端发送的connection: close报文被ad改写为S-Cnection: close。导致数据传输完成后服务端无法通知到客户端关闭连接。
    AD改写后的报头:
Content-Type: application/octet-stream;charset=utf-8
Content-Language: zh-CN
Content-Length: 188
Date: Mon, 06 May 2019 06:21:05 GMT
S-Cnection: close
Server: nginx


    在后台关闭服务自动保持长连接后客户端可收到服务端的关闭通知。正常关闭会话。
修改参数后:
修改参数前:

原因:
    1、ad不回应客户端关闭连接消息
    2、ad主动改写http关闭请求

解决方案:
    1、打补丁,使ad回应关闭消息。
    2、关闭服务自动保持长连接。

建议:
    ad默认对http进行优化。对浏览器类需要长连接的应用保持友好。对高并发短连接确是灾难。希望下个版本可显示的在界面对默认优化参数增加开关(全局开关、单服务开关)。

打赏鼓励作者,期待更多好文!

打赏
10人已打赏

sangfor_闪电回_小六 发表于 2019-5-14 11:46
  
非常实用的案例,感谢楼主分享
新手915440 发表于 2019-5-16 10:00
  
实用的案例,感谢楼主分享
阿飞007 发表于 2019-5-16 10:46
  
最新版本7.0.7R1碰到该情况也需要打补丁么?
海鲜 发表于 2019-5-17 08:31
  
需要打什么补丁包
小文来了 发表于 2019-5-17 08:50
  
实用的案例,感谢楼主分享。
drogba 发表于 2019-5-19 17:06
  

实用的案例
白露为霜 发表于 2019-5-21 11:56
  
实用的案例,感谢楼主分享。
这西瓜我吃定了233 发表于 2019-5-23 09:10
  
实用的案例,学习了
黄波 发表于 2019-5-24 11:48
  
bangband~哒~!
发表新帖
热门标签
全部标签>
每日一问
功能体验
技术笔记
新版本体验
技术咨询
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
信服课堂视频
GIF动图学习
产品连连看
安装部署配置
秒懂零信任
技术晨报
自助服务平台操作指引
深信服技术支持平台
每日一记
答题榜单公布
卧龙计划
畅聊IT
答题自测
云计算知识
通用技术
安全攻防
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
运维工具
用户认证
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
迁移
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
纪元平台
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版达人

新手61940...

本周建议达人

zhao_HN

本周分享达人

ZSFKF

本周提问达人