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

Next.js 14生产构建报错EMFILE:打开文件过多求解决方案

解决Next.js 14生产构建EMFILE: too many open files错误的方案
  • 确认ulimit永久生效配置
    临时调整ulimit仅对当前会话有效,需修改系统全局配置确保重启后仍生效:

    1. 编辑/etc/security/limits.conf,添加以下内容:
    * soft nofile 65535
    * hard nofile 65535
    root soft nofile 65535
    root hard nofile 65535
    
    1. 编辑/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive,添加一行:
    session required pam_limits.so
    
    1. 重启EC2服务器,执行ulimit -n验证是否生效为65535。
  • 在构建命令中强制提升文件描述符限制
    直接在构建命令前追加ulimit配置,确保Node.js进程能获取足够的文件描述符:
    修改package.json的build脚本:

    "scripts": {
      "build": "ulimit -n 65535 && next build"
    }
    

    或者执行构建时直接用:

    ulimit -n 65535 && npm run build
    
  • 优化Next.js构建并发配置
    减少Webpack同时处理的文件数量,避免超出限制:
    在next.config.js中添加Webpack配置:

    module.exports = {
      webpack: (config, { isServer }) => {
        // 根据服务器CPU核心数调整并发数,比如4核服务器设为4
        config.parallelism = 4;
        return config;
      },
      // 开启增量构建,减少每次构建处理的文件量
      incremental: true,
    };
    
  • 检查系统其他进程占用
    执行lsof | wc -l查看当前系统打开的文件总数,确认是否有其他进程(如日志服务、数据库)占用大量文件描述符,必要时关闭或优化这些进程。

  • 使用fs-max模块(针对特定Node.js版本)
    如果上述方法无效,可尝试安装fs-max模块强制提升Node.js的文件描述符限制:

    npm install fs-max --save-dev
    

    在next.config.js顶部添加:

    require('fs-max').set();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:44:54