OSS crc64 出现不一致

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 客户端的循环冗余校验和服务端不一致,可以上传成功 排查 出现类似问题,需要先收集信息,经常发生在 Java sdk 上传的过程中。 requestID 出现 checksum 不一致的情况一定会伴随有 requestID 信息。

客户端的循环冗余校验和服务端不一致,可以上传成功

1

排查

出现类似问题,需要先收集信息,经常发生在 Java sdk 上传的过程中。

  • requestID 出现 checksum 不一致的情况一定会伴随有 requestID 信息。
  • 上传方式是通过 SDK 还是自己调 API 上传,需要明确 SDK 的版本信息。
  • 问题能否稳定复现,能复现最好提供网络抓包便于问题分析。
  • tcpdump -i <出口网卡> -s0 host -w checksum.pcap

分析:

  • 收集到 requestID 后,先升级到阿里云确认是否已经上传成功,一般 checksum 不一致并不会导致上传失败, checksum 是对文件进行循环冗余计算的方法,和 MD5 不一样,如果 MD5 不一致,文件上传一定失败。如果日志记录上传成功,可以校验文件的 MD5 是否一致,如果一致的话请忽略 checksum 不一致的情况。
  • 出现 checksum 不一致的情况和网络以及系统主机都有关系,先通过网络抓包分析下,客户端发起 request header 中的 crc64 是否和 requestID 查到的 crc64,如果一致的话说明用户上传网络传输中被篡改了,如果不一致的话说明客户本地写入到内存后就出现问题。
  • 如果用户本地计算写入到内存和服务端的不一致,需要用户在本地代码中进行 debug ,在上传请求发起前,先打印出 crc64 记录到本地,看看与 SDK 计算的是否一致,确保文件在上传前不要有其他进行在占用,或者读写。如果本地计算的 crc64 和 SDK 一致 说明不是计算问题,而是写入到内存后出现了问题,说明是客户端的系统导致的异常。

建议:

  • 如果出现 checksum 不一致,但是文件 MD5 一致的话客户可以将 crc64 关掉,替换成 MD5 的校验方式,在 header 增加 Content-MD5 头,MD5 值要全部大写,然后在 base64 编码。
  • Java SDK 关闭 crc64 的方法
    关闭 crc 的方法如下:

https://help.aliyun.com/document_detail/32010.html?spm=a2c4g.11186623.6.702.5bb84b4eKVgJfk

String endpoint = "<yourEndpoint>";
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
ClientConfiguration conf = new ClientConfiguration();
conf.setCrcCheckEnabled(false);

// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, conf);
  • 使用 https 协议上传,将 endpoint 协议头改为 https 即可,看下更换为 https 协议后问题是否还能复现。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
16天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
4月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
4月前
|
存储 运维 安全
阿里云OSS的优势
【7月更文挑战第19天】阿里云OSS的优势
189 2
|
4月前
|
存储 API 开发工具
阿里云OSS
【7月更文挑战第19天】阿里云OSS
187 1
|
4月前
|
存储 弹性计算 对象存储
预留空间是什么?阿里云OSS对象存储预留空间说明
阿里云OSS预留空间是预付费存储产品,提供折扣价以锁定特定容量,适用于抵扣有地域属性的Bucket标准存储费用及ECS快照费。通过购买预留空间,如500GB通用预留+100GB标准-本地冗余存储包,用户可优化成本。
203 4
|
4月前
|
人工智能 对象存储
【阿里云AI助理】自家产品提供错误答案。阿里云OSS 资源包类型: 下行流量 地域: 中国内地通用 下行流量包规格: 300 GB 套餐: 下行流量包(中国内地) ,包1年。那么这个是每月300GB,1年是3600GB的流量;还是1年只有300GB的流量?
自家产品提供错误答案。阿里云OSS 资源包类型: 下行流量 地域: 中国内地通用 下行流量包规格: 300 GB 套餐: 下行流量包(中国内地) ,包1年。那么这个是每月300GB,1年是3600GB的流量;还是1年只有300GB的流量?
128 1
|
5月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
|
6月前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56595 7
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用

热门文章

最新文章