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

Linux服务器运行Next.js项目执行npm run dev/build报EAGAIN错误如何解决

问题原因

你遇到的EAGAIN是Linux系统级报错,含义是系统当前无法分配足够资源创建新的子进程,和服务器进程数上限不足、内存不够、Next.js默认多进程构建并发数过高,或者共享NFS存储IO延迟有关。

解决方案

  • 限制Next.js构建/运行的并发worker数
    Next.js默认会调用和CPU核心数等量的子进程做构建/运行处理,共享服务器通常会限制单用户进程数,直接执行会触发资源上限。执行命令时手动指定并发数即可:

    # 构建时指定1个worker
    NEXT_PRIVATE_WORKER_CONCURRENCY=1 npm run build
    # 开发运行时指定1个worker
    NEXT_PRIVATE_WORKER_CONCURRENCY=1 npm run dev
    

    也可以将配置写入项目根目录的next.config.js:

    module.exports = {
      experimental: {
        workerThreads: false,
        cpus: 1
      }
    }
    
  • 调整系统用户进程数上限
    执行ulimit -u查看当前单用户允许的最大进程数,如果数值低于256,可先临时调整:

    ulimit -u 1024
    

    永久调整需要编辑/etc/security/limits.conf,添加以下配置后重启生效:

    your_username soft nproc 1024
    your_username hard nproc 2048
    

    如果是学校/企业共享服务器,无权限修改配置可联系管理员调整进程数限制。

  • 检查内存并补充交换分区
    执行free -h查看服务器剩余内存,如果可用内存低于512M,可临时新增1G交换分区缓解内存压力:

    fallocate -l 1G /swapfile
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    

    无权限创建交换分区的场景优先使用第一种限制并发的方案。

  • 更换运行目录
    你当前的项目存放在NFS共享存储目录下,NFS的IO延迟可能导致子进程阻塞堆积,触发资源上限。可以先把项目移动到服务器本地磁盘目录完成构建,再将构建产物复制回NFS目录部署。

  • 调整Node.js版本
    你当前使用的Node.js v16.13.0存在已知的子进程资源泄漏问题,可以升级到Node.js 16.x最新LTS版本,或适配当前Next.js版本的更高LTS Node.js版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:06:03