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,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
10月前
|
存储 域名解析 安全
Nest 实现OSS 服务端签名直传并设置上传回调
Nest 实现OSS 服务端签名直传并设置上传回调
426 0
|
算法 应用服务中间件 对象存储
OSS上传回调支持自定义header以及v2版本签名
上传回调(callback)是OSS的一个重要功能,可以应用在客户端与服务器端数据同步等一些场景。上传回调功能支持在回调的body中传入信息,但是在一些场景下,用户希望能够在回调给应用服务器的请求header中传入自定义的header,用于满足服务器端的一些特殊需求。
4246 0
|
对象存储
OSS- OSS brower 登陆失败
案例: 登陆失败的几个原因 非公共云设置 1)endpoint 必须自定义 如果不自定义的话,类似金融云、政务云、专有云 等特殊环境登陆就会出现异常,比如 https 异常、或者 endpoint 和 bucket 设置的不一致; 2)当预设 OSS 路径为空时会先调 list bucket 接口做权限验证,如果客户登陆的不是主账号,是子账号的话,最好赋予 OSS 管理权限;如果没有权限的话就会出现登陆失败权限问题。
2411 0
|
移动开发 Java 应用服务中间件
OSS PostObject未发生回调的问题排查
今天排查一个问题,走了一些弯路,总结一下,希望可以为后来者提供参考建议。 ##问题: XX反馈,使用OSS PostObject的callback没有发生回调。但是通过putobject用同样的callback是有回调发生的。客户怀疑我们的PostObject有问题。 ##排查: OSS回调流程为 客户端->OSS->应用服务器->客户端 ![image.png](http://at
4095 0
|
2月前
|
分布式计算 大数据 MaxCompute
MaxCompute产品使用合集之使用pyodps读取OSS(阿里云对象存储)中的文件的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2天前
|
监控 Serverless 持续交付
阿里云云效产品使用问题之如何让流水线支持构建 flutter web 应用到 OSS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
20天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
|
2月前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56453 7
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用

热门文章

最新文章