/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

相关推荐

  • 在Proxmox VE下开启vGPU – Tesla P4为例

    对于 Proxmox VE 8,需要使用16.0+版本的 vGPU 驱动程序,低版本的驱动程序不支持 Linux 6.x 内核 最近我刚升级了我的 NAS 主机,并且购买了一块 Tesla P4 显卡。我想把 vGPU 分配给虚拟机上的 Jellyfin 容器硬解使用,经过几天的研究,我简单总结了使用方法。关于如何使用硬解,我会在下一篇文章中进行说明。 术语…

    2024年2月19日
    1.6K00
  • linux双向重定向之tee命令

    tee的作用是将一份标准输入多重定向,一份重定向到标准输出/dev/stdout,然后还将标准输入重定向到每个文件FILE中。 在执行Linux命令时,我们可以把输出重定向到文件中,比如 ls >rumenz.txt,这时不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了. tee流程示意图 命令语法 > tee…

    2023年9月20日
    1.0K00
  • 常见的windows网络管理命令

    ipconfig命令 ipconfig实用程序可用于显示当前机器的TCP/IP配置。 tracert命令 路由追踪命令,用来显示数据包到达目的主机所经过的路径。 一般添加 -d 参数 ,不将地址解析为计算机名,加快路由速度 nslookup命令 nslookup命令可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用哪个DNS服务器进行解释。 ip…

    2022年6月10日
    1.2K00
  • Route命令详解

    route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。 在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址…

    2023年4月7日
    1.1K00
  • OpenSSH_9.3p1 升级到 OpenSSH_9.5p1

    文章声明:此文基于实操撰写 生产环境:此文升级是基于9.3p1升级9.5p1ssh -V查看版本是:OpenSSH_9.3p1, OpenSSL 1.1.1t 7 Feb 2023问题关键字:OpenSSH 升级, OpenSSH 更新, OpenSSH 漏洞修复漏洞信息:OpenSSH 命令注入漏洞(CVE-2020-15778)、OpenSSH 安全漏洞…

    2023年12月13日
    1.5K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信