hand
_1_14_173
4
返回栏目
1k
2k
0.4k
0.6k
0.9k
0.7k
3k
2k
0.1k
1k
0k
1k
0k
0.4k
0.3k
0.1k
0.6k
0k
1k
3k
2k
0k
0k
0.4k
2k
1k
0k
6k
0.8k
1k
0.5k
2k
0k
0k
0k
2k
0k
4k
2k
1k
1k
2k
0k
0.5k
0k
1k
0.2k
0.3k
0.1k
0k
0k
0.8k
1k
0.6k
0k
0k
2k
0.6k
1k
2k
2k
0.6k
0.6k
0.5k
1k
2k
0.5k
0.1k
0.2k
4k
0k
0.1k
0.8k
1k
0.3k
0k
0.3k
0.1k
1k
8k
0.1k
0.7k
0.1k
0.3k
0.9k
0.2k
4k
0.2k
6k
3k
3k
1k
3k
0.1k
1k
0.2k
0k
0.7k
0.4k
2k
2k
0.5k
0.8k
5k
0.1k
0.3k
0.3k
0.5k
0.1k
1k
0k
0.7k
0.2k
2k
2k
1k
6k
3k
1k
2k
1k
2k
2k
1k
0k
0k
1k
0k
0k
0.3k
0.3k
0.2k
0k
0.3k
0k
1k
0.1k
0.6k
0k
0k
0k
0k
0k
0.1k
0k
0k
0k
0.2k
0k
0.2k
0k
0k
0k
0k
0k
0k
0k
0.9k
1k
2k
0.8k
0.4k
0k
0k
0k
0.5k
0k
0k
0k
0k
0.4k
0k
0k
0.1k
返回服务器栏目
作者:
贺及楼
成为作者
更新日期:2024-10-11 11:51:58
Linux的核心思想之一就是”一切皆文件”
用于限制整个系统能够分配的文件描述符
cat /proc/sys/fs/file-max
vi /proc/sys/fs/file-max
## 临时修改,机器重启后失效
sysctl -w fs.file-max=102400
## 永久修改
vi /etc/sysctl.conf
fs.file-max=102400
## 执行下面命令使配置生效,一说要重启服务器才生效
sysctl -p
cat /proc/sys/fs/file-max
这个是文件描述符的默认值
只读文件,当前系统中文件描述符的使用情况
1952 0 3043564
当前系统中文件描述符的使用情况
第一个(6144)是系统已经分配的文件描述符数
第二个(0)是系统已经分配但未使用的文件描述符数
第三个是内核最大能分配的文件描述符数,与file-max一致
单个进程可以分配的最大文件描述符,对系统所有用户下的所有进程都生效
cat /proc/sys/fs/nr_open
在Linux的系统中对于进程(Process)会有一些限制,这就所谓的limit,在实际应用中最常见的就是对打开文件(Open Files)的限制,在配置web 服务如nginx时就会用到。在linux中这些限制是分为软限制(soft limit)和硬限制(hard limit)的。他们的区别就是
软限制可以在程序的进程中自行改变(突破限制)
硬限制则不行(除非程序进程有root权限)
ulimit -Sn 查看的是软限制
ulimit -Hn 查看的是硬限制
ulimit命令选项:
选项 | 释义 |
---|---|
-a | 显示目前资源限制的设定; |
-c <core文件上限> | 设定core文件的最大值,单位为区块; |
-d <数据节区大小> | 程序数据节区的最大值,单位为KB; |
-f <文件大小> | shell所能建立的最大文件,单位为区块; |
-H | 设定资源的硬性限制,也就是管理员所设下的限制; |
-m <内存大小> | 指定可使用内存的上限,单位为KB; |
-n <文件数目> | 指定同一时间最多可开启的文件数; |
-p <缓冲区大小> | 指定管道缓冲区的大小,单位512字节; |
-s <堆叠大小> | 指定堆叠的上限,单位为KB; |
-S | 设定资源的弹性限制; |
-t <CPU时间> | 指定CPU使用时间的上限,单位为秒; |
-u <程序数目> | 用户最多可开启的程序数目; |
-v <虚拟内存大小> | 指定可使用的虚拟内存上限,单位为KB。 |
## ulimit -a输出内容详解:
[root@lh ~]# ulimit -a
core file size (blocks, -c) 0 #core文件的最大值为100 blocks。
data seg size (kbytes, -d) unlimited #进程的数据段可以任意大。
scheduling priority (-e) 0
file size (blocks, -f) unlimited #文件可以任意大。
pending signals (-i) 98304 #最多有98304个待处理的信号。
max locked memory (kbytes, -l) 32 #一个任务锁住的物理内存的最大值为32KB。
max memory size (kbytes, -m) unlimited #一个任务的常驻物理内存的最大值。
open files (-n) 1024 #一个任务最多可以同时打开1024的文件。
pipe size (512 bytes, -p) 8 #管道的最大空间为4096字节。
POSIX message queues (bytes, -q) 819200 #POSIX的消息队列的最大值为819200字节。
real-time priority (-r) 0
stack size (kbytes, -s) 10240 #进程的栈的最大值为10240字节。
cpu time (seconds, -t) unlimited #进程使用的CPU时间。
max user processes (-u) 98304 #当前用户同时打开的进程(包括线程)的最大个数为98304。
virtual memory (kbytes, -v) unlimited #没有限制进程的最大地址空间。
file locks (-x) unlimited #所能锁住的文件的最大个数没有限制
cat /etc/security/limits.conf
vi /etc/security/limits.conf
## 添加:
DefaultLimitNOFlLE=65536
cat /etc/systemd/system.conf
vi /etc/systemd/system.conf
## 添加:
DefaultLimitNOFlLE=65536
cat /etc/systemd/user.conf
vi /etc/systemd/user.conf
## 添加:
DefaultLimitNOFlLE=65536
统计各进程打开句柄数:lsof -n|awk '{print $2}'|sort |uniq -c|sort -nr
统计各用户打开句柄数:lsof -n|awk '{print $3}'|sort |uniq -c|sort -nr
统计各命令打开句柄数:lsof -n|awk '{print $1}'|sort |uniq -c|sort -nr
查看当前进程实时打开的文件数:lsof -p 进程PID | wc -l
查看某个进程的句柄数限制:cat /proc/进程ID/limits
查看系统限制的最大文件打开数:cat /proc/sys/fs/file-max
查看系统当前已使用的文件句柄数:cat /proc/sys/fs/file-nr
服务器
整章节共174节
快分享给你的小伙伴吧 ~