当前位置: 首页 > article >正文

ubuntu 22.04 如何调整进程启动后能打开的文件数限制

在 Ubuntu 22.04 中,可以通过修改系统配置来调整进程启动后能够打开的文件数软限制。软限制是指操作系统允许单个进程打开的文件描述符的最大数量。以下是调整该限制的方法:

1. 查看当前限制

首先,你可以通过 ulimit 命令查看当前的软限制和硬限制:

ulimit -n

这个命令会返回当前进程可以打开的最大文件数(软限制)。

2. 临时调整(仅对当前会话有效)

你可以使用 ulimit 命令来临时调整当前 shell 会话中的文件打开限制:

ulimit -n 65535

这将把软限制设置为 65535。请注意,这个限制仅在当前终端会话中有效,退出会话后会恢复默认设置。

3. 永久调整

要永久修改文件打开限制,需要修改系统配置文件,确保新的设置在每次系统启动时生效。

(a) 修改 /etc/security/limits.conf

编辑 /etc/security/limits.conf 文件,设置适当的软限制和硬限制。打开该文件进行编辑:

sudo nano /etc/security/limits.conf

然后添加如下行:

root soft nofile 65535
root hard nofile 65535

这将设置root用户的软限制和硬限制都为 65535。

注意
1)我尝试了 * soft nofile 65535,本来想设置所有用户,但没有成功。
2)如果是nginx,则需要添加(nginx是以nginx启动的)
nginx soft nofile 65535
nginx hard nofile 65535

(b) 修改 /etc/pam.d/common-session/etc/pam.d/common-session-noninteractive

确保 PAM(可插拔认证模块)能够应用这些限制。编辑以下文件:

sudo nano /etc/pam.d/common-session

在文件的末尾添加以下行:

session required pam_limits.so

这将确保 PAM 模块在会话启动时加载限制配置。

© 修改 /etc/sysctl.conf (可选)

有时候,内核级别的限制可能会影响文件描述符的上限。如果需要,你还可以调整内核参数:

sudo nano /etc/sysctl.conf

添加以下行:

fs.file-max = 1000000

然后应用更改:

sudo sysctl -p

4. 重启系统

为了确保所有更改生效,最好重启计算机或重新登录。

5. 验证

重启后,可以使用以下命令验证设置是否成功:

ulimit -n

或者查看系统级别的文件描述符限制:

cat /proc/sys/fs/file-max

这样,你就可以根据需要调整 Ubuntu 22.04 中进程的文件打开数软限制了。

6. 对于 systemd 启动的服务

如果你的进程是通过 systemd 启动的(例如作为服务或后台进程),limits.conf 配置也可能不会直接生效。这是因为 systemd 管理的进程有自己的资源限制机制。

  • 要为 systemd 管理的服务设置文件描述符限制,你需要编辑相应服务的配置文件(如 /etc/systemd/system/your-service.service),并在 [Service] 部分中设置 LimitNOFILE

    [Service]
    LimitNOFILE=65535
    

    然后重新加载 systemd 配置并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart your-service
    

如何判定某个进程的文件数打开限制:
cat /proc/$(pgrep nginx | head -n 1)/limits | grep ‘Max open files’


http://www.kler.cn/a/387900.html

相关文章:

  • 利用 Screen 保持 VSCode 连接远程任务持续运行
  • CSS 自定义滚动条样式
  • Qt 编写插件plugin,支持接口定义信号
  • linux安装netstat命令
  • HTML之列表
  • 重学SpringBoot3-整合 Elasticsearch 8.x (三)使用Repository
  • 基于Spring Boot+Vue的养老院管理系统【原创】
  • ElasticSearch备考 -- 集群配置常见问题
  • FPN(Feature Pyramid Network)
  • pytorch3d报错:RuntimeError: Not compiled with GPU support.
  • 后台管理系统窗体程序:文章管理 > 文章列表
  • ChatGPT键盘快捷键(按ctrl + /呼出)
  • JavaSE:运算符 (学习笔记)
  • LeetCode热题100之贪心算法
  • 【系统架构设计师】2024年下半年真题论文: 论分布式事务及其解决方案(包括参考素材)
  • 【C语言】调试宏:进阶篇
  • Unity引擎智能座舱解决方案
  • C# 中 LibraryImport 和 DllImport有什么不同
  • [C++11] Lambda 表达式
  • 1.1 Android 应用的基础知识
  • w030基于web的甘肃非物质文化网站的设计与开发
  • A15基于Spring Boot的宠物爱心组织管理系统的设计与实现
  • Go的数组,slice切片,map的使用
  • 微服务架构面试内容整理-服务注册与发现-Nacos
  • 【数据库系列】postgresql链接详解
  • 制作python的Dockerfile