
# obsutil性能调优最佳实践
obsutil对大于50MB的文件/对象默认采用分段方式进行上传、下载和复制，与分段任务相关的参数在.obsutilconfig配置文件中，如[表1]所示。
 表1多段参数 
| 参数                      | 描述                                                                                                                                                                                                                                                                         |
|:---|:---|
| defaultBigfileThreshold | 开启分段任务的阈值，如果待上传/下载/复制的文件大于该阈值，则采用分段任务的形式进行上传/下载/复制。单位：字节，默认为50MB。                                                                                                                                                                                                          |
| defaultPartSize         | 每个分段任务的段大小，单位：字节，默认为auto。 说明： - 对于分段上传和分段复制取值范围是100KB\~5GB。  - 对于分段下载取值范围无限制。   |
| 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/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参数）实现对失败任务的重试；
 
