【问题标题】:How to increase ulimit on Amazon EC2 instance?如何增加 Amazon EC2 实例的 ulimit?
【发布时间】:2012-07-05 17:31:00
【问题描述】:

通过 SSH 连接到运行 Amazon Linux AMI 的 EC2 实例后,我尝试了:

ulimit -n 20000

...并得到以下错误:

-bash: ulimit: open files: cannot modify limit: Operation not permitted

但是,shell 允许我减少这个数字,仅限当前会话。

有没有办法增加 EC2实例(永久)的ulimit?

【问题讨论】:

    标签: amazon-ec2 ulimit


    【解决方案1】:

    实际上,通过ulimit 命令更改值仅适用于当前的shell 会话。如果要永久设置新限制,则必须编辑 /etc/security/limits.conf 文件并设置硬限制和软限制。这是一个例子:

    # <domain> <type> <item>  <value>
        *       soft  nofile  20000
        *       hard  nofile  20000
    

    保存文件,注销,再次登录,通过ulimit -n命令测试配置。希望对您有所帮助。

    附: 1:记住以下几点:

    • 软限制:内核对相应资源实施的值。
    • 硬限制:用作软限制的上限。

    附: 2:/etc/security/limits.d/ 中的附加文件可能会影响limits.conf 中的配置。

    【讨论】:

    • Re - PS2 - 如果你想改变这些值,建议在limit.d中添加一个文件,因为它们优先。我的建议是不要直接编辑 limits.conf。
    • 您确定需要重新启动吗?我认为注销并重新登录就足够了。
    • 可以使用“ulimit -n”查看仅允许打开的文件数(与“ulimit -a”相对)
    • limits.d 中需要使用的文件名是什么? limits.conf 可以吗?
    • 请注意,我已将自己锁定在通过 SSH 连接到 EC2 实例的这种方式之外。我几乎将所有内容都设置为无限制,所以也许这太激进了。如果确实发生了这种情况,您始终可以在启动时使用用户数据功能删除您的 /etc/security/limits.d/whatever 文件。
    【解决方案2】:

    感谢您的回答。对我来说,仅仅更新 /etc/security/limits.conf 是不够的。只有“打开的文件” ulimit -n 得到更新,而 nproc 没有得到更新。更新 /etc/security/limits.d/whateverfile 后,nproc "ulimit -u" 也更新了。

    步骤:

    • sudo vi /etc/security/limits.d/whateverfile
    • 更新为 nproc/nofile 设置的限制
    • sudo vi /etc/security/limits.conf
    *  soft  nproc  65535
    *  hard  nproc  65535
    *  soft  nofile 65535
    *  hard  nofile 65535
    
    • 重启机器sudo reboot

    附:我无法将其添加为评论,因此不得不发布作为答案。

    【讨论】:

    • 感谢您的回答。我必须在limits.conflimits.d/whateverifle 中设置限制,才能使ulimit 正确生效。我在 ec2 实例上的 Ubuntu 18.04 AMI 上执行此操作。
    【解决方案3】:

    我没有足够的代表点数来发表评论……很抱歉有新的回复,但也许这会让某人不会浪费一个小时。

    Viccari 的回答终于解决了我这个头疼的问题。每个其他来源都会告诉您编辑 limits.conf 文件,如果这不起作用,请添加

    session   required    pam_limits.so
    

    /etc/pam.d/common-session 文件

    不要这样做!

    我正在运行一个 Ubuntu 18.04.5 EC2 实例,这将我完全锁定在 SSH 之外。我可以登录,但是一旦它要让我进入提示,它就断开了我的连接(我什至看到了所有的欢迎消息和东西)。详细显示这是最后一个错误:

    fd 1 is not O_NONBLOCK
    

    我找不到这意味着什么的答案。因此,在关闭实例后,等待大约一个小时对卷进行快照,然后将其挂载到另一个正在运行的实例上,我删除了对 common-session 文件的编辑,然后 bam,SSH 登录再次工作。

    对我有用的修复方法是在 /etc/security/limits.d/ 文件夹中查找文件,然后对其进行编辑。

    (不,我不需要重新启动来获得新的限制,只需注销并重新登录)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 2018-08-23
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多