如何在Amazon EC2实例上增加ulimit?

时间:2012-07-05 10:12:15

标签: amazon-ec2 ulimit

在SSH进入运行Amazon Linux AMI的EC2实例后,我尝试了:

ulimit -n 20000

...并收到以下错误:

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

但是,shell允许我减少此数字,仅适用于当前会话。

无论如何增加 EC2实例上的ulimit (永久)

3 个答案:

答案 0 :(得分:63)

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

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

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

P.S。 1:记住以下几点:

  • 软限制:内核对相应资源强制执行的值。
  • 硬限制:作为软限制的上限。

P.S。 2:/etc/security/limits.d/中的其他文件可能会影响limits.conf中的配置。

答案 1 :(得分:2)

我没有足够的代表点数来发表评论......抱歉我的新回复,但也许这可以防止某人浪费一个小时。

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/ 文件夹中查找文件并对其进行编辑。

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

答案 2 :(得分:0)

谢谢您的回答。对我来说,仅更新/etc/security/limits.conf是不够的。仅“打开文件” ulimit -n得到更新,而nproc没有得到更新。更新/etc/security/limits.d/任何文件后,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

P.S。我无法将其添加为评论,因此必须将其发布为答案。