当前位置: 首页 > 知识库问答 >
问题:

AWS弹性豆茎部署失败并出现ENOMEM错误

单于皓轩
2023-03-14

您的AWS弹性豆茎部署失败:-间歇性-没有真正明显的原因

第一步:检查明显的日志

/变量/对数/eb-活动.log

  Running npm install:  /opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/bin/npm
  Setting npm config jobs to 1
  npm config jobs set to 1
  Running npm with --production flag
  Failed to run npm install. Snapshot logs for more details.
  Traceback (most recent call last):
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 695, in <module>
      main()
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 677, in main
      node_version_manager.run_npm_install(options.app_path)
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 136, in run_npm_install
      self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir'))
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 180, in npm_install
      raise e
  subprocess.CalledProcessError: Command '['/opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/bin/npm', '--production', 'install']' returned non-zero exit status 1 (ElasticBeanstalk::ExternalInvocationError)
caused by: + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install

第二步:谷歌合适的快照日志文件...

/var/log/nodejs/npm-debug.log

58089 verbose stack Error: spawn ENOMEM
58089 verbose stack     at exports._errnoException (util.js:1022:11)
58089 verbose stack     at ChildProcess.spawn (internal/child_process.js:313:11)
58089 verbose stack     at exports.spawn (child_process.js:380:9)
58089 verbose stack     at spawn (/opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/lib/node_modules/npm/lib/utils/spawn.js:21:13)
58089 verbose stack     at runCmd_ (/opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/lib/node_modules/npm/lib/utils/lifecycle.js:247:14)
58089 verbose stack     at /opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/lib/node_modules/npm/lib/utils/lifecycle.js:211:7
58089 verbose stack     at _combinedTickCallback (internal/process/next_tick.js:67:7)
58089 verbose stack     at process._tickCallback (internal/process/next_tick.js:98:9)
58090 verbose cwd /tmp/deployment/application
58091 error Linux 4.4.44-39.55.amzn1.x86_64
58092 error argv "/opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v6.10.0-linux-x64/bin/npm" "--production" "install"
58093 error node v6.10.0
58094 error npm  v3.10.10
58095 error code ENOMEM
58096 error errno ENOMEM
58097 error syscall spawn
58098 error spawn ENOMEM

第3步:明显的选项…

>

  • 使用更大的实例,它的工作原理...

    不要修复,只是再试一次

    >

  • 再次部署,它就可以工作了。。。

    克隆环境,它就能正常工作。。。

    重建环境,它就会工作。。。。

    只剩下肮脏和错误的感觉

  • 共有2个答案

    越勇
    2023-03-14

    我们很少在开发中使用这个数量;然而,ElasticBeanstalk通过生成的工作程序并行化构建过程的一部分。这意味着在设置过程中,对于较大的包,可能会运行内存溢出,操作将失败。

    这正是发生在我身上的事!我的node.js服务器在我的dev ec2 t2-micro上工作得很好,但是当我在elastic beanstalk(也是用t2-micro)上部署一个staging enviorment时,出现了这个错误。

    邵刚洁
    2023-03-14

    您的实例(在我的例子中是t2.micro)正在耗尽内存,因为实例加速是并行的。

    对于一次性,在登录实例时…

    sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
    sudo /sbin/mkswap /var/swap.1
    sudo chmod 600 /var/swap.1
    sudo /sbin/swapon /var/swap.1
    

    来自/更多详细信息:如何将交换添加到 EC2 实例?

    在部署过程中,我们使用了一些SWAP,但没有崩溃

    Mem:   1019116k total,   840880k used,   178236k free,    15064k buffers
    Swap:  1048572k total,    12540k used,  1036032k free,    62440k cached
    

    更大的实例

      < li >虽然存储可以通过EBS扩展,但实例带有固定的CPU和RAM,AWS源。 < li >需要成本,这些只是开发实例,其中mem仅在启动过程中出现问题

    在ElasticBeanStalk中自动提供交换

    • 可能<代码>。e扩展名/
    • 开放性问题:云形成风格还是部署/重启挂钩

    加入“无服务器”的潮流

    • API Gateway Lambda Friend的promise是我们不应该处理这个ish。
    • 您是否“足够高”来使用云原生微服务?当像SOA这样的古板/不流行的东西就足够了时,它们是否适合您的问题。
    • 一旦云优先,恢复本地将是困难的,这是一些人的要求。

    使用不太臃肿的包装

    • 有时您会被遗留问题所困扰
    • 可能是由必要的传递依赖项或子依赖项引起的。它在哪里结束……分解其他人的图书馆

    一个快速的谷歌显示ENOMEM是一个内存溢出错误。t2.micro实例只有1 GB的内存。

    我们很少在开发中使用这个数量;然而,ElasticBeanstalk通过生成的工作程序并行化构建过程的一部分。这意味着在设置过程中,对于较大的包,可能会运行内存溢出,操作将失败。

    使用自由 -m 我们可以看到...

    启动(大量可用内存)

                 total       used       free     shared    buffers     cached
    Mem:       1019116     609672     409444        144      45448     240064
    -/+ buffers/cache:     324160     694956
    Swap:            0          0          0
    

    下一个刻度时内存不足)

    Mem:       1019116     947232      71884        144      11544      81280
    -/+ buffers/cache:     854408     164708
    Swap:            0          0          0
    

    部署过程已中止

                 total       used       free     shared    buffers     cached
    Mem:       1019116     411892     607224        144      13000      95460
    -/+ buffers/cache:     303432     715684
    Swap:            0          0          0
    
     类似资料:
    • 我一直在努力将我的Django Web应用程序成功部署到AWS的Elastic Beanstalk。我能够在本地机器上从EB CLI部署我的应用程序,没有任何问题,直到我将container_commands配置文件列表添加到.ebextensions文件夹中。 以下是我的配置文件的内容: 我已经深入研究了日志,发现这些消息在 cfn-init-cmd.log是最有帮助的: 我不确定为什么它在这个

    • 我尝试创建新的环境,然后给出应用程序版本的s3桶路径,但它不起作用。(给出了一些错误,说“这只能在VPC中完成”)。

    • 假设我在Wordpress中创建了一个站点,它运行在Elastic Beanstalk上。现在,在运行的应用程序上,我将创建帖子/页面,上传图像等。也就是说,数据库中的一些数据、视频、文件和记录将被添加到运行的应用程序中。 从我在AWS控制台中看到的情况来看,我可以部署一个应用程序的不同版本--但是根据上面的场景,如果我部署了一个新版本,我会不会丢失直接上传到正在运行的应用程序中的所有文件(即文件

    • 我目前正在尝试此处的 AWS 教程 https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/deploying-a-sample-skill-as-a-web-service#h3_deployEB 在纠正之前,我已经完成了所有步骤,但如果我尝试第二步:“在Eclipse项目浏览器中,右键单击该项目,然后单

    • 我正在严格遵循弹性豆茎文档(http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html),但我无法使用git部署节点.js或PHP应用程序。 如果我试图从git推动,也会发生同样的事情 当您调用eb init时,AWS工具会设置一些git快捷方式。失败的呼叫是。。。 该python模

    • 配置验证异常:AWS Elastic Beanstatk无法与Amazon EC2通信以确定是否为Elastic Load均衡创建自定义安全组。 在创建AWS Elastic Beanstalk应用程序时,我在尝试继续“查看和启动”时遇到了这个错误。我是新手。请帮忙。