OSS线上业务突发回调失败

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: CallbackFailed回调失败,通常需要从网络层面或者回调服务本身查找原因,如果本地模拟无法复现则可以考虑使用一些公网的探测工具进行探测,并抓包分析。

问题描述

客户反馈线上业务大量回调失败,具体报错如下。但客户反馈本地去测试向回调服务发起请求,回调服务是可以正常接收请求的,但回调服务器上找不到OSS发起的回调日志。

com.aliyun.oss.OSSException:Error status :502

[ErrorCode]: CallbackFailed

[RequestId]: 6131E16DA8654B3338371A32

[HostId]: xxx.oss-cn-shenzhen.aliyuncs.com

问题排查

1. 初步分析

根据报错来看,502错误一种可能是回调服务直接响应了502,另一种可能是OSS向回调服务地址发起回调时候直接连不上或者会阻断,导致没有走到七层。初步判断是OSS到回调服务器之间的网络问题。

2. 基调探测

阿里网站运维监测平台发起基调探测,探测客户的回调地址,发起有很多地区都存在连不上的请求,请求被reset (connection reset by peer)。从探测结果来看,也怀疑是回调服务器的问题。

3. 抓包确认

本地模拟测试发一个post请求到客户回调服务确实是正常的,没有复现到问题。因此尝试到基调平台上抓包,同时由于阿里网站运维检平台目前暂时不支持抓包,因此先考虑用第三方基调"听云"平台去探测抓包。因为OSS用的深圳区域,因此直接在听云上用深圳三大运营商去发起探测,发现也是存在部分请求被重置(reset)的情况。

抓包分析发现有以下几个点
(1)21、25、26三个包是三次握手包,25号是回调服务器的握手sync包,通告的win窗口居然是0。
(2)三次握手成功以后,28号包直接发了reset包,从报文看这是服务端发了reset包。
(3)从TTL看,服务端握手sync包(25号)包 的TTL是119,服务端reset包(28号)包的TTL也是119,说明这种现象不太可能是劫持行为。因为如果不是服务端发的reset包,而是被网络链路的其他节点劫持以后发的reset包,那么TTL不会刚好也是119。基于以上,基本上可以确认是回调服务器的原因造成的。

问题原因

经过确认,原因是客户自己回调服务器的EIP有自带DDoS的防护功能,防护阈值是固定的,比如200Mb(入带宽)。在客户业务量上涨后,客户扩容了带宽,但DDoS 访问阈值没有跟着调整,导致业务量上涨后触发了DDoS防护机制,开始流量清洗。这次是Sync 访问的清洗,服务端通过回Sync+Ack+Win=0来阻断这次应用链接。

适用产品

对象存储OSS

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
8月前
|
存储 域名解析 安全
Nest 实现OSS 服务端签名直传并设置上传回调
Nest 实现OSS 服务端签名直传并设置上传回调
385 0
|
对象存储
OSS- OSS brower 登陆失败
案例: 登陆失败的几个原因 非公共云设置 1)endpoint 必须自定义 如果不自定义的话,类似金融云、政务云、专有云 等特殊环境登陆就会出现异常,比如 https 异常、或者 endpoint 和 bucket 设置的不一致; 2)当预设 OSS 路径为空时会先调 list bucket 接口做权限验证,如果客户登陆的不是主账号,是子账号的话,最好赋予 OSS 管理权限;如果没有权限的话就会出现登陆失败权限问题。
2377 0
|
移动开发 Java 应用服务中间件
OSS PostObject未发生回调的问题排查
今天排查一个问题,走了一些弯路,总结一下,希望可以为后来者提供参考建议。 ##问题: XX反馈,使用OSS PostObject的callback没有发生回调。但是通过putobject用同样的callback是有回调发生的。客户怀疑我们的PostObject有问题。 ##排查: OSS回调流程为 客户端->OSS->应用服务器->客户端 ![image.png](http://at
4085 0
|
算法 应用服务中间件 对象存储
OSS上传回调支持自定义header以及v2版本签名
上传回调(callback)是OSS的一个重要功能,可以应用在客户端与服务器端数据同步等一些场景。上传回调功能支持在回调的body中传入信息,但是在一些场景下,用户希望能够在回调给应用服务器的请求header中传入自定义的header,用于满足服务器端的一些特殊需求。
4200 0
|
18小时前
|
存储 弹性计算 数据管理
【阿里云弹性计算】ECS实例的冷热数据管理:利用阿里云 OSS 与 ECS 的高效协同
【5月更文挑战第28天】阿里云ECS与OSS协同,实现弹性计算服务的高效数据管理。ECS处理热数据,OSS存储冷数据,降低存储成本,提升性能。通过自动化策略实现数据自动迁移,优化实例性能,适用于电商图片、日志存储等场景。注意迁移策略设置和数据安全,为企业带来更大价值和竞争力。
6 1
|
8天前
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
|
13天前
|
安全 Linux 对象存储
数据备份到阿里云oss上,以防勒索病毒的破坏
数据备份到阿里云oss上,以防勒索病毒的破坏
25 0
|
13天前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。