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

多进程池调用FFMPEG生成视频出现BlockingIOError: [Errno 11]问题咨询

报错根因定位

你遇到的BlockingIOError: [Errno 11] Resource temporarily unavailable本质不是磁盘IO瓶颈,和你观测到的IO使用率低的情况完全吻合,这个错误触发在subprocess创建ffmpeg子进程的环节,属于操作系统层面的资源配额耗尽问题,常见触发原因有两个:

  • 单进程允许打开的最大文件描述符数达到上限,多进程池同时启动大量ffmpeg实例时,每个实例都会占用管道、文件句柄等资源,累计超过上限就会触发该报错
  • 系统全局的进程数限额被打满,多进程池的每个工作进程都会fork出ffmpeg子进程,短时间进程数暴涨超过系统pid_max限制也会出现该错误

线程化方案的适配性

将写入调用改为线程化的方案不能解决根本问题,且不适合在多进程池场景下使用:

  • 不管用进程还是线程调度写入任务,最终都要创建ffmpeg子进程,只要并发创建的子进程数量超过系统配额,报错依然会触发
  • 多进程池场景下叠加多线程逻辑,反而会增大资源调度的复杂度,容易出现锁竞争、资源争抢的问题,稳定性会更差

可行优化方案

  • 降低多进程池的最大并发数,建议设置为和服务器物理CPU核心数一致,避免短时间内批量创建大量ffmpeg子进程打满系统资源
  • 调高系统允许的最大文件描述符配额,临时调整可执行命令ulimit -n 65535,永久生效需要修改/etc/security/limits.conf,添加如下配置:
* soft nofile 65535
* hard nofile 65535
  • 调用write_videofile时传入threads=1参数,限制单个ffmpeg进程的内部线程数,减少单任务的资源占用
  • 在任务逻辑中添加重试机制,捕获到BlockingIOError后等待1~2秒再重试执行写入逻辑,规避瞬时资源高峰导致的偶发报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:09:03