开发者社区> 问答> 正文

客户使用ossfs上传超过超过100G的文件异常怎么处理?

客户使用ossfs上传超过超过100G的文件异常怎么处理

展开
收起
1358896759097293 2021-03-10 10:16:47 1412 0
1 条回答
写回答
取消 提交回答
  • 45271990@qq.com

    排查: 1) 先了解 ossfs 的大文件上传原理,ossfs 上传大文件,是通过分片来做的,默认分片时 10M,分片数量最大时 1000 个,也就是默认限制大小为 100G。 2) 出现这种本地磁盘空间不够的情况,是因为 OSS 再上传会写一些临时缓存 文件到 /tmp 目录下,再写之前先要判断下磁盘的管理空间是否小于用户上 传的文件总量。

    // check free disk space
     if(!FdManager::IsSafeDiskSpace(NULL, S3fsCurl::GetMultipartSize() * 
    S3fsCurl::GetMaxParallelCount())){
     S3FS_PRN_EXIT("There is no enough disk space for used as cache(or 
    temporary) directory by s3fs.");
     S3fsCurl::DestroyS3fsCurl();
     s3fs_destroy_global_ssl();
     exit(EXIT_FAILURE);
     }
    
    

    3) 而用户上传的文件是一个 300G 的文件,本地磁盘冗余 600G,不可能不够 的,但是代码统计不会说谎,当时磁盘空间预判确实不够,ossfs 唯一能够 控制分片的就是 ,multipart_size 和 控制线程的数量。但是默认是 5 个,不 可能是线程数量导致的,唯一可能就是 multipart_size 导致。通过分析发现 用户 multipart_size 是 300G * 5 = 1.5T,这个 multipart_size 分片大小是 M ,结果自然超过了本地的磁盘安全空间,所以导致的无法上传,将分片大 小降低后就解决了。

    2021-03-12 23:06:15
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载