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

Docker容器运行Eleventy时出现间歇性EMFILE等错误求助

Docker容器中Eleventy间歇性文件类错误的已知根因分析

在Docker容器内运行npx eleventy时,源码未做任何修改却间歇性出现以下三类错误:

  • EMFILE: too many open files
  • ENOTDIR: not a directory
  • ENOENT: no such file or directory

复现示例输出

$ while true ; do npx eleventy ; done
[11ty] Wrote 95 files in 1.42 seconds (14.9ms each, v2.0.1)
[11ty] Wrote 95 files in 1.71 seconds (18.0ms each, v2.0.1)
[11ty] Wrote 95 files in 1.55 seconds (16.3ms each, v2.0.1)
[11ty] Wrote 95 files in 2.01 seconds (21.2ms each, v2.0.1)
[11ty] Wrote 95 files in 1.47 seconds (15.5ms each, v2.0.1)
[11ty] Wrote 95 files in 1.45 seconds (15.3ms each, v2.0.1)
[11ty] Wrote 95 files in 1.62 seconds (17.1ms each, v2.0.1)
[11ty] Wrote 95 files in 1.73 seconds (18.2ms each, v2.0.1)
[11ty] Wrote 95 files in 1.78 seconds (18.7ms each, v2.0.1)
[11ty] Wrote 95 files in 1.52 seconds (16.0ms each, v2.0.1)
[11ty] Problem writing Eleventy templates: (more in DEBUG output)
[11ty] EMFILE: too many open files, stat './src/DIR/index.md' (via Error)
[11ty]
[11ty] Original error stack trace: Error: EMFILE: too many open files, stat './src/DIR/index.md'
[11ty] Wrote 0 files in 1.53 seconds (v2.0.1)
[11ty] Wrote 95 files in 1.56 seconds (16.4ms each, v2.0.1)
[11ty] Wrote 95 files in 1.70 seconds (17.9ms each, v2.0.1)
[11ty] Wrote 95 files in 1.86 seconds (19.6ms each, v2.0.1)
[11ty] Wrote 95 files in 1.48 seconds (15.6ms each, v2.0.1)
[11ty] Wrote 95 files in 2.06 seconds (21.7ms each, v2.0.1)
[11ty] Wrote 95 files in 1.64 seconds (17.3ms each, v2.0.1)
[11ty] Wrote 95 files in 1.58 seconds (16.6ms each, v2.0.1)
[11ty] Wrote 95 files in 1.98 seconds (20.8ms each, v2.0.1)
[11ty] Problem writing Eleventy templates: (more in DEBUG output)
[11ty] EMFILE: too many open files, stat './src/DIR/index.md' (via Error)
[11ty]
[11ty] Original error stack trace: Error: EMFILE: too many open files, stat './src/DIR/index.md'
[11ty] Wrote 0 files in 1.02 seconds (v2.0.1)
[11ty] Wrote 95 files in 1.52 seconds (16.0ms each, v2.0.1)
[11ty] Wrote 95 files in 1.60 seconds (16.8ms each, v2.0.1)
[11ty] Wrote 95 files in 1.45 seconds (15.3ms each, v2.0.1)
[11ty] Wrote 95 files in 1.53 seconds (16.1ms each, v2.0.1)
[11ty] Wrote 95 files in 1.48 seconds (15.6ms each, v2.0.1)
[11ty] Wrote 95 files in 1.57 seconds (16.5ms each, v2.0.1)
[11ty] Wrote 95 files in 1.57 seconds (16.5ms each, v2.0.1)
[11ty] Wrote 95 files in 2.01 seconds (21.2ms each, v2.0.1)
[11ty] Wrote 95 files in 1.39 seconds (14.6ms each, v2.0.1)
[11ty] Wrote 95 files in 2.00 seconds (21.1ms each, v2.0.1)
[11ty] Wrote 95 files in 1.55 seconds (16.3ms each, v2.0.1)
[11ty] Wrote 95 files in 1.52 seconds (16.0ms each, v2.0.1)
[11ty] Wrote 95 files in 1.49 seconds (15.7ms each, v2.0.1)
[11ty] Wrote 95 files in 1.56 seconds (16.4ms each, v2.0.1)
[11ty] Wrote 95 files in 2.07 seconds (21.8ms each, v2.0.1)
[11ty] Wrote 95 files in 1.62 seconds (17.1ms each, v2.0.1)
[11ty] Wrote 95 files in 1.65 seconds (17.4ms each, v2.0.1)
[11ty] Wrote 95 files in 1.76 seconds (18.5ms each, v2.0.1)
[11ty] Wrote 95 files in 1.48 seconds (15.6ms each, v2.0.1)
[11ty] Wrote 95 files in 1.86 seconds (19.6ms each, v2.0.1)
[11ty] Problem writing Eleventy templates: (more in DEBUG output)
[11ty] EMFILE: too many open files, stat './src/DIR/index.md' (via Error)
[11ty]
[11ty] Original error stack trace: Error: EMFILE: too many open files, stat './src/DIR/index.md'
[11ty] Wrote 0 files in 1.12 seconds (v2.0.1)
[11ty] Wrote 95 files in 1.53 seconds (16.1ms each, v2.0.1)
[11ty] Wrote 95 files in 1.51 seconds (15.9ms each, v2.0.1)
[11ty] Wrote 95 files in 1.49 seconds (15.7ms each, v2.0.1)
[11ty] Wrote 95 files in 1.96 seconds (20.6ms each, v2.0.1)
[11ty] Wrote 95 files in 1.59 seconds (16.7ms each, v2.0.1)
[11ty] Wrote 95 files in 1.48 seconds (15.6ms each, v2.0.1)

已知可能的根因

  • Docker容器文件描述符上限不足:Docker默认给容器的ulimit(文件描述符数量)远低于宿主机,Eleventy批量处理文件时,短时间内打开的文件数偶尔触顶,引发EMFILE错误。
  • 文件系统竞态与缓存不一致:如果使用绑定挂载的宿主机目录或Docker Volume,文件系统缓存可能出现短暂不同步,导致Eleventy读取文件时出现ENOENT/ENOTDIR错误;前一次构建的文件残留或清理不及时也会触发这类竞态问题。
  • Eleventy资源泄漏:Eleventy v2.x部分版本存在文件句柄未正确关闭的情况,多次重复构建后,泄漏的句柄累积达到上限,触发EMFILE错误,这类问题的间歇性源于需要多次构建才会达到阈值。
  • Node.js并发文件操作超限:Node.js默认文件操作并发量较高,容器环境资源受限,并发打开文件时可能超出容器的ulimit限制,或引发文件系统的竞态问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:05:02