tencent cloud

对象存储

动态与公告
产品动态
产品公告
产品简介
产品概述
功能概览
应用场景
产品优势
基本概念
地域和访问域名
规格与限制
产品计费
计费概述
计费方式
计费项
免费额度
计费示例
查看和下载账单
欠费说明
常见问题
快速入门
控制台快速入门
COSBrowser 快速入门
用户指南
创建请求
存储桶
对象
数据管理
批量处理
全球加速
监控与告警
运维中心
数据处理
内容审核
智能工具箱
数据工作流
应用集成
工具指南
工具概览
环境安装与配置
COSBrowser 工具
COSCLI 工具
COSCMD 工具
COS Migration 工具
FTP Server 工具
Hadoop 工具
COSDistCp 工具
HDFS TO COS 工具
GooseFS-Lite 工具
在线辅助工具
自助诊断工具
实践教程
概览
访问控制与权限管理
性能优化
使用 AWS S3 SDK 访问 COS
数据容灾备份
域名管理实践
图片处理实践
COS 音视频播放器实践
工作流实践
数据直传
内容审核实践
数据安全
数据校验
大数据实践
COS 成本优化解决方案
在第三方应用中使用 COS
迁移指南
本地数据迁移至 COS
第三方云存储数据迁移至 COS
以 URL 作为源地址的数据迁移至 COS
COS 之间数据迁移
Hadoop 文件系统与 COS 之间的数据迁移
数据湖存储
云原生数据湖
元数据加速
数据加速器 GooseFS
数据处理
数据处理概述
图片处理
媒体处理
内容审核
文件处理
文档处理
故障处理
获取 RequestId 操作指引
通过外网上传文件至 COS 缓慢
访问 COS 时返回403错误码
资源访问异常
POST Object 常见异常
API 文档
简介
公共请求头部
公共响应头部
错误码
请求签名
操作列表
Service 接口
Bucket 接口
Object 接口
批量处理接口
数据处理接口
任务与工作流
内容审核接口
云查毒接口
SDK 文档
SDK 概览
准备工作
Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Flutter SDK
Go SDK
iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
React Native SDK
小程序 SDK
错误码
鸿蒙(Harmony) SDK
终端 SDK 质量优化
安全与合规
数据容灾
数据安全
访问管理
常见问题
热门问题
一般性问题
计费计量问题
域名合规问题
存储桶配置问题
域名和 CDN 问题
文件操作问题
日志监控问题
权限管理问题
数据处理问题
数据安全问题
预签名 URL 问题
SDK 类问题
工具类问题
API 类问题
服务协议
Service Level Agreement
隐私政策
数据处理和安全协议
联系我们
词汇表

请求速率与性能优化

PDF
聚焦模式
字号
最后更新时间: 2025-04-23 14:11:36
注意: 当前 COS 已经通过底层索引打散机制实现高 QPS,如果有需要更高性能的 QPS 需求,可以 联系我们。在日常组织文件过程中,我们仍然推荐您遵循本文档的要求,避免过于集中的索引存储方式。

简介

本文探讨请求速率性能优化在腾讯云对象存储(Cloud Object Storage,COS)上的最佳实践。
腾讯云对象存储提供的典型工作负载能力为每秒30000个 PUT 请求,或者每秒30000个 GET 请求。如果您的工作负载超过了上述能力,建议您遵循本指南实现请求速率的性能扩展和优化。
说明:
请求负载指的是每秒发起的请求数量,非并发连接数。即您在保持数千连接数的同时,仍可以在1s时间内发送数百个新连接请求。
腾讯云 COS 支持性能扩展,以支持更高的请求速率。如果您的请求是高 GET 请求负载,建议您搭配腾讯云 CDN 产品进行使用,详情请参见 域名管理。如果预计存储桶的综合请求速率会超过每秒30000个 PUT/GET 请求,建议您 联系我们,以便于为工作负载做好准备,避免遇到请求的限制。
说明:
如果您的混合请求负载只是偶尔达到每秒30000个,并在突发时不超过每秒30000个,您可无需遵循本指南。

实践步骤

混合请求负载

当需要上传大量对象的时候,您选择的对象键可能会引发性能问题,以下将简述腾讯云 COS 对 Object 键值的存储方法。
腾讯云在 COS 的每一个服务地域都维护了存储桶(Bucket)和对象(Object)的键值作为索引,对象键以 UTF-8 二进制顺序保存在索引的多个分区中。对于大量的键值,例如,使用时间戳或者字母顺序可能会耗尽键值所在分区的读写性能,以存储桶路径examplebucket-1250000000.cos.ap-beijing.myqcloud.com 为例,以下列出了可能会耗尽索引性能的一些案例:
20170701/log120000.tar.gz
20170701/log120500.tar.gz
20170701/log121000.tar.gz
20170701/log121500.tar.gz
...
image001/indexpage1.jpg
image002/indexpage2.jpg
image003/indexpage3.jpg
...
如果您的业务典型负载超过每秒30000个请求,则应避免使用上述案例中的顺序键值。当您的业务必须使用顺序编号或日期时间等字符作为对象键时,您可以使用一些方法向对象键名称添加随机前缀,即可实现在多个索引分区实现键值管理,提升集中负载的性能。以下提供了一些在键值中增加随机性的方法。
注意:
以下提供的所有方法,均是有可能提升单个存储桶访问性能的方法,如果您的业务典型负载超过每秒30000个请求,在执行以下方法的同时,您仍需 联系我们 以便于为您的业务负载提前做好准备。

添加十六进制哈希前缀

最直接的增加对象键随机性的方式,就是在对象键名称的最前面添加哈希字符串作为前缀,例如可以在上传对象时,对路径键值进行 SHA1或 MD5哈希计算,并选取几位字符作为前缀添加到键值名称,通常2 - 4位的字符哈希前缀可以满足需要。
faf1-20170701/log120000.tar.gz
e073-20170701/log120500.tar.gz
333c-20170701/log121000.tar.gz
2c32-20170701/log121500.tar.gz
注意:
由于腾讯云 COS 的键值索引是以 UTF-8二进制顺序作为索引的,因此在执行列出对象(GET Bucket)操作时,您可能需要发起65536次列出对象操作,才能得到原来完整的20170701前缀结构。

添加枚举值前缀

如果您仍想要保留对象键的检索易用性,您可以针对您的文件类型枚举出一些前缀,实现对象分组,相同枚举值的前缀将共享所在索引分区的性能。
logs/20170701/log120000.tar.gz
logs/20170701/log120500.tar.gz
logs/20170701/log121000.tar.gz
...
images/image001/indexpage1.jpg
images/image002/indexpage2.jpg
images/image003/indexpage3.jpg
...
如果您在相同枚举前缀下,仍然有较高的访问负载,持续超过每秒30000个请求,您可以参照上述添加十六进制哈希前缀的方式,在枚举值后继续添加哈希前缀执行多个索引分区,以实现更高性能的读写。

logs/faf1-20170701/log120000.tar.gz
logs/e073-20170701/log120500.tar.gz
logs/333c-20170701/log121000.tar.gz
...
images/0165-image001/indexpage1.jpg
images/a349-image002/indexpage2.jpg
images/ac00-image003/indexpage3.jpg
...


反转键值名称字符串

当您的业务不得不使用连续递增的 ID 或日期,或需要一次性上传大量的连续前缀对象时,如下述典型用法:
20170701/log0701A.tar.gz
20170701/log0701B.tar.gz
20170702/log0702A.tar.gz
20170702/log0702B.tar.gz
...
id16777216/album/hongkong/img20170701121314.jpg
id16777216/music/artist/tony/anythinggoes.mp3
id16777217/video/record20170701121314.mov
id16777218/live/show/date/20170701121314.mp4
...
如上的键值命名方式极易耗尽2017与 ID 为前缀的键值所在的索引分区,此时将键值前缀的一部分反转后,则实现了一定的随机性。
10707102/log0701A.tar.gz
10707102/log0701B.tar.gz
20707102/log0702A.tar.gz
20707102/log0702B.tar.gz
...
61277761di/album/hongkong/img20170701121314.jpg
61277761di/music/artist/tony/anythinggoes.mp3
71277761di/video/record20170701121314.mov
81277761di/live/show/date/20170701121314.mp4
...

高 GET 请求负载

如果主要的业务负载是 GET 请求(即下载请求)为主,除了建议遵守上述准则外,还建议您搭配腾讯云 CDN 服务使用。
腾讯云 CDN 利用遍布全国和全球的边缘加速节点,向用户分发内容时可降低延时并提高速度,对于热点文件可以支持预拉热的方式进行缓存,从而减少回源到 COS 的 GET 请求数,详情请参见 域名管理 文档。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈