新增网站建设方案,网站十大品牌,如何做企业网站推广,嵌入式工程师证书怎么考文章目录 一. limits.conf常见配置项详解二. 文件描述符#xff08;file descriptor#xff09;简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits… 文章目录 一. limits.conf常见配置项详解二. 文件描述符file descriptor简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits.conf 是一个用于配置用户或用户组资源限制的配置文件。这个文件通常用于设置系统资源的软限制和硬限制以及一些特殊权限。
一. 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操作的系统调用都通过文件描述符来实现。 文件描述符表格 Linux内核对所有打开的文件有一个文件描述符表格里面存储了每个文件描述符作为索引与一个打开文件相对应的关系简单理解如上图这样一个数组文件描述符索引就是文件描述符表这个数组的下标数组的内容就是指向一个个打开的文件的指针。 三. 为什么限制
为什么要限制打开的文件描述符 资源问题每个打开的文件都需要消耗内存来管理而内存是有限的。安全问题如果不限制的话有不怀好心的人启动一个进程来无限的创建和打开新的文件会让服务器崩溃。 为什么限制进程数 资源管理 进程数限制有助于控制系统资源的分配和使用。每个进程都需要分配一些系统资源如内存、CPU 时间、文件描述符等。如果允许无限制地创建大量进程可能会消耗掉系统的资源导致系统变得不稳定或崩溃。 性能和稳定性过多的进程可能会导致系统性能下降。当系统负载增加时会增加调度和管理进程的开销可能导致响应时间变长甚至影响到系统的稳定性。 安全性 进程数限制也有助于防止恶意软件或恶意用户通过大量的进程耗尽系统资源从而对系统进行拒绝服务攻击Denial of ServiceDoS或拖垮系统的运行。 避免资源竞争 限制进程数也有助于避免资源竞争。在某些情况下过多的进程可能争夺相同的资源导致竞争、阻塞或性能下降。 四. 相关操作
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
54. 各进程占用的文件描述符
lsof -n |awk {print $10}|sort |uniq -c |sort -nr|head -10
9838 488 IDEA279 Chrome.app/Contents/Frameworks/Google150 Book96 id58 Layouts/AppleKeyboardLayouts.bundle/Contents/Resources/AppleKeyboardLayouts-L.dat50 Support/Google/Chrome/Subresource41 (ESTABLISHED)36 Support/XMind/Electron33 Support/Google/Chrome/optimization_guide_model_store/25/63922A0C010C80A5/6B406658B3AA7A20/visual_model_desktop.tflite