obsutil性能调优最佳实践
obsutil对大于50MB的文件/对象默认采用分段方式进行上传、下载和复制,与分段任务相关的参数在.obsutilconfig配置文件中,如表1所示。
参数 |
描述 |
---|---|
defaultBigfileThreshold |
开启分段任务的阈值,如果待上传/下载/复制的文件大于该阈值,则采用分段任务的形式进行上传/下载/复制。单位:字节,默认为50MB。 |
defaultPartSize |
每个分段任务的段大小,单位:字节,默认为auto。
说明:
|
defaultParallels |
每个分段任务的最大并发数,默认为5。 |
通常情况下使用分段任务不仅能提高传输效率,还能实现失败任务的断点续传。默认情况下,分段任务的段大小可以使用auto模式让obsutil自动调整。但在实际操作中,为了进一步提升上传下载性能,可根据文件大小、网络情况等因素进行调整,以获得最大传输效率并能保证传输任务顺利完成。
其中分段并发数可按照以下规则进行调整:
defaultParallels = Min(CPU个数 * 2, 目标对象大小 / defaultPartSize*1.5)
在上传、下载和复制命令中,obsutil提供-p和-ps参数用于修改分段并发数和分段大小,并最终以在命令中配置的参数值下发分段任务。如果在命令中不配置,则采用配置文件中的默认值。
其中分段并发数可按照以下规则进行调整:
p = Min(CPU个数 * 2, 目标对象大小 / ps*1.5)
同时针对批量上传/下载任务,还可以通过调整defaultJobs(-j)最大并发任务数参数进行调优。
对于待上传/下载对象主要为小文件(通常在几M以内的文件),且文件个数较多的场景,由于文件本身较小,此时修改defaultParallels (-p)和defaultPartSize(-ps)这两个参数的效果可能不明显,建议适当增大defaultJobs(-j)参数以提升并行任务数,从而提升上传下载性能;
对于待上传/下载对象主要为大文件的场景,建议优先调整defaultParallels (-p)和defaultPartSize(-ps)这两个参数的数值;同时要考虑 总的并发数=并发任务数(defaultJobs)* 单任务最大并发数(defaultParallels ),总的并发数过大的情况下,可能会因为线程间资源切换及抢夺等原因,导致obsutil上传/下载/复制的性能出现下降;同时也更容易受整体网络情况波动的影响,导致部分任务失败;
![](https://support.huaweicloud.com/intl/zh-cn/eu-west-0-utiltg-obs/public_sys-resources/note_3.0-zh-cn.png)
- 由于运行机资源限制,如果并发数配置过大,可能会因此线程间资源切换及抢夺等原因,导致obsutil上传/下载/复制的性能下降,所以请根据实际的文件大小和网络情况调整defaultParallels (-p)和defaultPartSize(-ps)这两个参数的数值。如果要进行压力测试,可以一开始将两个数值调低,然后慢慢调大寻找最佳值。
- 如果defaultParallels (-p)和defaultPartSize(-ps)参数值过大,可能会因为网络不稳定等原因,产生EOF错误,此时请适当降低defaultParallels (-p)和defaultPartSize(-ps)参数值。
- 如果进行的是批量操作,目标对象大小可以取待操作对象的平均值。
- 执行批量任务时,针对常见的网络问题如timeout、EOF等,建议通过增量操作(cp命令中的-u参数)进行重试;同时也可以根据失败的批量任务最终输出的taskID信息,通过恢复失败任务(cp命令中的-recover参数)实现对失败任务的重试;