/etc/security/limits.conf配置文件详解

/etc/security/limits.conf 是一个用于配置用户或用户组资源限制的配置文件。这个文件通常用于设置系统资源的软限制和硬限制,以及一些特殊权限。

一. limits.conf常见配置项详解

下面是一些 /etc/security/limits.conf 文件中可能包含的常见配置项:

/etc/security/limits.conf配置文件详解

描述

第一列表示用户和组(@开头),这里的 * 代表所有用户。第二列表示软限制还是硬限制,第三列表示限制的资源类型,第四列表示限制的最大值 hard和soft的区别。
soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错,一般情况下都是设为同一个值。
core是内核文件,nofile是文件描述符,noproc是进程,一般情况下只限制文件描述符数和进程数就够了
注意

修改了 /etc/security/limits.conf 文件后,需要注销并重新登录用户,或者重新启动相关的服务才能使配置生效。

二. 文件描述符(file descriptor)简述


文件描述符是一个索引

Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。在操作文件的时候,如果每操作一次就找一次名字,这就会耗费大量的时间和效率。所以Linux中规定每一个文件对应一个索引,与文件交互时直接找索引即可,这里的索引就是文件描述符。

文件描述符(file descriptor)是内核为了高效管理这些已经被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符来实现。

文件描述符表格

/etc/security/limits.conf配置文件详解

Linux内核对所有打开的文件有一个文件描述符表格,里面存储了每个文件描述符作为索引与一个打开文件相对应的关系,简单理解如上图这样一个数组,文件描述符(索引)就是文件描述符表这个数组的下标,数组的内容就是指向一个个打开的文件的指针。

三. 为什么限制


为什么要限制打开的文件描述符?

资源问题:每个打开的文件都需要消耗内存来管理,而内存是有限的。
安全问题:如果不限制的话,有不怀好心的人启动一个进程来无限的创建和打开新的文件,会让服务器崩溃。

为什么限制进程数?

资源管理: 进程数限制有助于控制系统资源的分配和使用。每个进程都需要分配一些系统资源,如内存、CPU 时间、文件描述符等。如果允许无限制地创建大量进程,可能会消耗掉系统的资源,导致系统变得不稳定或崩溃。

性能和稳定性:过多的进程可能会导致系统性能下降。当系统负载增加时,会增加调度和管理进程的开销,可能导致响应时间变长,甚至影响到系统的稳定性。

安全性: 进程数限制也有助于防止恶意软件或恶意用户通过大量的进程耗尽系统资源,从而对系统进行拒绝服务攻击(Denial of Service,DoS)或拖垮系统的运行。

避免资源竞争: 限制进程数也有助于避免资源竞争。在某些情况下,过多的进程可能争夺相同的资源,导致竞争、阻塞或性能下降。

四. 相关操作

1. 展示当前资源限制

ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63456
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 327680
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

关注几个值

max locked memory (kbytes, -l): 最大锁定内存大小限制,表示进程可以锁定在内存中的最大数据量。这里设置为 64 KB。

open files (-n): 打开文件的数量限制,表示进程可以同时打开的文件数量。这里设置为 327680。

pipe size (512 bytes, -p): 管道大小限制,表示管道缓冲区的最大大小。这里设置为 8,表示管道缓冲区的大小为 8 * 512 字节。

stack size (kbytes, -s): 栈大小限制,表示进程栈的最大大小。这里设置为 8192 KB。

max user processes (-u): 最大用户进程数限制,表示一个用户可以创建的最大进程数量。这里设置为 4096。
2. 查看系统当前打开的文件描述符数量

sudo cat /proc/sys/fs/file-nr
1184    0       1610170
  • 第一个数:表示当前系统分配后已使用的文件描述符数,
  • 第二个数:表示分配后未使用的(内核2.6版本中这个值总是为0,这并不是一个错误,它意味着已经分配的文件描述符总会被使用),
  • 第三个数:等于最大值file-max。

3. 查看某个进程打开的文件描述符数量

$ lsof -p 20262 |wc -l
5

4. 各进程占用的文件描述符

lsof -n |awk ‘{print $10}’|sort |uniq -c |sort -nr|head -10
9838
488 IDEA
279 Chrome.app/Contents/Frameworks/Google
150 Book
96 id
58 Layouts/AppleKeyboardLayouts.bundle/Contents/Resources/AppleKeyboardLayouts-L.dat
50 Support/Google/Chrome/Subresource
41 (ESTABLISHED)
36 Support/XMind/Electron
33 Support/Google/Chrome/optimization_guide_model_store/25/63922A0C010C80A5/6B406658B3AA7A20/visual_model_desktop.tflite

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/11702

(0)
凯影的头像凯影
上一篇 2024年5月13日 下午3:11
下一篇 2024年5月14日 下午3:19

相关推荐

  • 查看调整cpu频率及模式

    使用cpufrequtils查看调整cpu频率及模式 cpufrequtils是一个查看和修改CPU频率GHz的工具有些物理服务器使用默认频率进行运行,这时可以使用该工具进行就该CPU的核心频率 安装: 使用: cpufreq-info 查看当前cpu状态 参数: 参数 值 说明 -c CPU序号 查看所指定cpu状态 -f 查看cpu当前频率 -l 查看c…

    2023年11月3日
    1.6K00
  • Ubuntu篇—文件压缩与解压

    查看文件夹占用磁盘大小 du -sh 一:Ubuntu下解压和压缩tgz文件 参数: -c :create 建立压缩档案的参数; -x : 解压缩压缩档案的参数; -z : 是否需要用gzip压缩; -v: 压缩的过程中显示档案; -f: 置顶文档名,在f后面立即接文件名,不能再加参数 1 将tgz文件解压到指定目录 2 将指定目录压缩到指定文件 二:ubu…

    2022年6月22日
    1.7K00
  • Linux系统管理本地 Linux 用户和组

    Linux的用户UID 系统中的每个进程(运行程序)都作为一个特定用户运行。每个文件归一个特定用户所有。对文件和目录的访问受到用户的限制。与运行进程相关联的用户可确定该进程可访问的文件和目录。 用户的分类 root用户 用户系统中唯一,权限最大,可以操作任意命令 普通用户 权限较低,只能编辑自己的用户家目录,由root账户创建 虚拟用户 没有登录系统的权限,…

    2022年6月11日
    1.8K00
  • 由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系解决方法

    server2016远程桌面出现一下提示,无法正常链接 问题原因 是安装了远程桌面授权服务 解决方法 使用mstsc  /v: 192.168.188.14 /admin 强制登陆服务器 远程登陆系统后,运行输入Regedit 进入注册表 查找如下信息删除 HKEY_LOCAL_MACHINE\SYSTEM\CurrentCon…

    2024年2月19日
    2.1K00
  • K8S集群搭建高可用prometheus+grafana

    使用k3s来搭建测试环境。 为什么使用k3s K3s 是一个轻量级的、完全兼容的 Kubernetes 发行版本。非常适合测试。 K3s将所有 Kubernetes 控制平面组件都封装在单个二进制文件和进程中,文件大小<100M,占用资源更小,且包含了kubernetes运行所需要的部分外部依赖和本地存储提供程序。 K3s提供了离线安装包,安装起来非常…

    2022年11月22日
    1.8K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信