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

ipluto 8300

{{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人已打赏

ytfqyjj 发表于 2021-1-26 15:15
  
感谢楼主的精彩分享,学习了!
心已搬到你那 发表于 2021-1-19 18:30
  
感谢作者分享,步骤写的很详细
新手285063 发表于 2021-1-17 21:09
  
感谢作者分享,步骤写的很详细
新手920702 发表于 2021-1-12 11:04
  
感谢楼主的精彩分享,学习了!
新手631551 发表于 2021-1-6 20:32
  
感谢分享,学习一下。
jimes 发表于 2020-8-4 08:59
  
实用的案例,感谢分享!
新手548437 发表于 2020-4-10 10:21
  
感谢分享。
新手612152 发表于 2020-2-26 09:22
  
内容详细,点赞
蓝海 发表于 2019-8-23 17:12
  
感谢分享,学习了
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
技术笔记
新版本体验
产品连连看
2023技术争霸赛专题
技术咨询
GIF动图学习
功能体验
标准化排查
信服课堂视频
自助服务平台操作指引
社区帮助指南
通用技术
秒懂零信任
答题自测
安装部署配置
上网策略
SANGFOR资讯
技术晨报
项目案例
深信服技术支持平台
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版达人

新手61940...

本周建议达人

zhao_HN

本周分享达人

ZSFKF

本周提问达人