问题描述
请求顺序读写频率过高,触发服务端流控。
问题原因
用户在某个时刻的请求集中在特定前缀,导致热点分区形成,进而触发了服务端的流控。
问题示例
OSS根据文件key的UTF-8编码顺序自动划分数据分区,以支持大规模文件管理和高并发请求。然而,在使用顺序前缀(如时间戳或按字典序排列的字符串)的情况下,可能引起部分分区过载现象,即大量文件集中在少数几个分区中。
比如您使用日期与客户ID生成文件key,则您的Bucket中会包含顺序时间戳前缀:
sample-bucket-01/2024-07-19/customer-1/file1
sample-bucket-01/2024-07-19/customer-2/file2
sample-bucket-01/2024-07-19/customer-3/file3
...
sample-bucket-01/2024-07-20/customer-2/file4
sample-bucket-01/2024-07-20/customer-5/file5
sample-bucket-01/2024-07-20/customer-7/file6
...
如果您在某个时间点的高频请求集中在某些特定分区,就会使之变成热点分区,这时会触发系统的流控返回503的状态码,以及PartitionQpsLimitted的错误码。
解决方案
建议您避免在同一时刻集中访问某些特定分区,或者通过文件Key打散的方式来避免同一时刻需要访问的文件存在相同的前缀。具体做法您可以参考OSS性能最佳实践。
该文章对您有帮助吗?