AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1011693
Accepted
hpy
hpy
Asked: 2020-04-10 19:36:53 +0800 CST2020-04-10 19:36:53 +0800 CST 2020-04-10 19:36:53 +0800 CST

增加未在 RHEL 8.1 中应用的 ulimit 打开文件

  • 772

我有一个完全更新的 Red Hat Enterprise Linux (RHEL) 8.1 x86_64 系统,作为本地终端中的本地用户(即不是通过 SSH 远程),当我运行ulimit -Sn它时会说1024并ulimit -Hn产生4096. 我想增加这些数字,因为通常当我编译大型项目时gcc,该make步骤会因too many open files错误而失败。我什至尝试将编译移到podman容器中,但这并没有帮助,因为容器只是继承了我本地用户的ulimits。

这是我在主机上尝试过的:

  1. 在/etc/security/limits.conf我添加了:
*          soft nofile 32767
*          hard nofile 65535
[username] soft nofile 32767
[username] hard nofile 65535
  1. 我查了一下ls -a /etc/security/limits.d/,那里没有文件。
  2. /etc/sysctl.conf里面有一行说明fs.file-max = 65535。我也跑了sysctl -p。
  3. 我添加session required pam_limits.so到文件末尾/etc/pam.d/login。
  4. ls -a /etc/sysctl.d/显示了两个文件./ ../ 50-libreswan.conf 99-sysctl.conf@,它们都不包含与打开文件数量相关的任何内容。
  5. cat /proc/sys/fs/file-max说65535。
  6. /etc/systemd/user.conf是空的(所有行都被注释掉了),我试图明确地设置DefaultLimitNOFILE=65535.

尝试上述方法后,当我运行cat /proc/self/limitsor时prlimit,相关的输出行仍然显示:

NOFILE     max number of open files                1024      4096 files

我现在唯一的线索是,当我使用 Gnome 的系统活动应用程序查看我的进程时,当我打开一个终端窗口时,有两个 bash进程都在我的本地用户下。奇怪的是,当我cat /proc/[process id]/limits在两个进程上运行时,一个显示大32767限制,而另一个显示原始1024限制。我想检查我的~/.bashrc,~/.bash_profile但他们没有改变我的ulimit.

我难住了!

我还可以检查和尝试什么来增加我的ulimit -n? 或者 SELinux可能systemd与它有关吗?谢谢您的帮助。

编辑:根据@Gerrit 的建议,我运行systemd-cgls它说几乎所有在我的本地用户下运行的东西都在:

-.slice
├─user.slice
│ ├─user-1005.slice
│ │ ├─session-2.scope
│ │ │ └─[many entries here]
│ │ └─[email protected]
│ │   └─[many entries here]
ulimit rhel8
  • 1 1 个回答
  • 5609 Views

1 个回答

  • Voted
  1. Best Answer
    Gerrit
    2020-04-10T23:32:03+08:002020-04-10T23:32:03+08:00

    在版本 240 之前的 systemd 设置中,所有用户进程都在内核建议的默认用户资源限制下运行,在 RHEL 8.1 上,硬限制似乎是 4096,软限制是 1024。在 systemd 240 中,这已更改为将默认硬限制设置为 512K,默认软限制保持不变,以避免程序为每个潜在的文件描述符或其他兼容性问题保留内存的问题。

    您可以使用 DefaultLimitNOFILE= 设置在 [Manager] 部分的 /etc/systemd/system.conf 中更改 NOFILE 的默认 HARD 限制。需要重新启动才能使其生效。

    之后,您确实可以通过设置 NOFILE 来提高默认的软/etc/security/limits.conf限制* soft nofile nnnn。不需要将 pam_limits 添加到 /etc/pam.d/login,至少在 Centos 7 中不需要,因为 /etc/pam.d/system-auth 已经包含了。

    • 1

相关问题

  • 如何增加 Linux 上的打开文件限制?

  • 大容量系统的实用最大打开文件描述符 (ulimit -n)

  • AIX 上的 ulimit 强制执行?

  • 如何在 Solaris 10 中设置 ulimit

  • OS X (10.5) 上指定的默认 ulimit 在哪里?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve