【问题标题】:Node.js and ulimitNode.js 和 ulimit
【发布时间】:2013-11-18 21:43:35
【问题描述】:

我在这里和那里看到了一些关于在使用 Node.js 时在 Linux 中设置 ulimit -n(文件句柄)的讨论。大多数 Linux 发行版的默认值是 1024。我在任何地方都找不到推荐。通常对于 apache,您会将其设置得相当高。对此有什么想法吗?开始时很容易将其设置为高,但不确定是否需要。我们是远程使用Mongo,本地没有打开很多文件。

【问题讨论】:

  • Node 本身并不能保护您免于消耗/过度消耗,因此在某些情况下您应该提高限制,而在某些情况下您应该以不同的方式构建(例如,使用排队机制并且只做少数几个一次并发项目。)
  • 是的,现在做更多的负载测试,它并没有变得疯狂。亚马逊对于如何设置它没有很好的答案。

标签: node.js ubuntu ulimit


【解决方案1】:

我收到了来自 AWS 支持的回复,并且它有效:

对于容器,每个 beanstalk 实例都是一个带有 beanstalk 软件的容器,它会在启动时下载您的应用程序,并根据环境类型和应用程序的 .ebextensions 文件夹修改系统参数。

因此,为了实现我的建议,您需要在您的应用程序上创建一个 .ebextensions,其中包含我提到的内容。

作为回顾,请在您的应用程序的 .ebextensions 文件夹中创建一个名为 app.config 的文件,其中包含以下(更新的)内容:

files:
 "/etc/security/limits.conf":
     mode: "00644"
     owner: "root"
     group: "root"
     content: |
         *                soft    nofile          20000
         *                hard    nofile          20000

commands:
 container_commands:
      command: "ulimit -HSn 20000; service httpd restart;"

添加此文件后,保存项目并进行新部署。

对于ssh,如果你想运行一个有更多限制的用户,你可以在登录后运行以下命令: sudo su -c "ulimit -HSn 20000; su - ec2-user"

当前的会话将具有您想要的限制。

供参考: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-services https://unix.stackexchange.com/questions/29577/ulimit-difference-between-hard-and-soft-limits http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多