You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建时执行AWS S3 CLI命令报错can't start new thread如何解决

问题根因

  • 仅设置max_concurrent_requests参数不足以完全限制AWS S3 CLI的线程生成,该工具还有max_queue_size、分片处理相关的参数会额外创建线程
  • Docker build默认的进程最大线程数(nproc)ulimit限制通常较低,递归删除S3端大量文件时,CLI内部异步队列处理逻辑容易触发线程数上限,抛出can't start new thread报错

解决方案

方案1:补充AWS S3 CLI的线程限制配置

修改Dockerfile中的AWS配置段,完整限制所有关联参数:

...
RUN yarn build
# 完整配置S3 CLI的线程/队列相关参数,避免额外创建线程
RUN aws configure set default.s3.max_concurrent_requests 1 \
    && aws configure set default.s3.max_queue_size 1 \
    && aws configure set default.s3.multipart_threshold 1024MB \
    && aws configure set default.s3.multipart_chunksize 1024MB
RUN aws sts get-caller-identity
RUN aws s3 rm s3://public-assets/build/_next/static --recursive
...

方案2:调整Docker build的ulimit限制

执行构建命令时放开线程数限制:

docker build --ulimit nproc=65535:65535 .

方案3:执行S3删除命令时强制使用单线程模式

直接在aws s3 rm命令中添加参数禁用多线程相关逻辑:

RUN aws s3 rm s3://public-assets/build/_next/static --recursive --no-paginate

补充验证步骤

可以在Dockerfile中临时添加RUN ulimit -a查看构建环境默认的线程数上限,确认调整后的参数是否生效。

内容的提问来源于stack exchange,提问作者Debdut Goswami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:39:06