关于 list 超时及规避方式

最近更新时间: 2017-08-30 18:46:43

一个空间存放了大量的文件,这个数量很大,用户 list 出一部分文件批量删除空间的大量文件,然后再次调用 list 接口整个空间的文件名,list 失败并报超时错误。

问题截图(Java版本):

blob.png

遇到这个问题时,请修改如下配置文件的超时时间,改到 200s;或者使用 qshell 工具,使用 listbucket 命令对空间文件名打印输出。

blob.png

如果依然显示超时,原因如下:

在七牛的存储系统中,当用户调用 list 接口时,系统程序会先查看 marker 参数是否为空,如果为空,则起点位置设为整个空间的第一个文件,然后过滤整个空间的所有文件名并返回。

每当用户删除了大量文件,这时用户调用 list 接口,系统还是先查看 marker 字段是否为空,如果为空,则开始过滤已经被标记删除文件的信息, 如果删除的文件很多,系统会过滤很长时间,list等待时间过长,导致list失败

规避方式:

调用 list 接口时,设置 marker 参数,指定 list 标记位置,如此系统不会过滤之前被删除的文件,而之间从标记位置遍历下去。

本文涉及接口:

以上内容是否对您有帮助?
  • Qvm free helper
    Close