1、ulimit命令
命令作用:可以设置系统的限制值
命令参数:
-a 显示所有限制
-c core文件大小的上限
-d 进程数据段大小的上限
-f shell所能创建的文件大小的上限
-m 驻留内存大小的上限
-s 堆栈大小的上限
-t 每秒可占用的CPU时间上限
-p 管道大小
-n 打开文件数的上限
-u 进程数的上限
-v 虚拟内存的上限
命令使用,临时性的直接用ulimit 加参数设置,永久性的需要修改/etc/security/limits.conf
每个进程可打开的文件数:ulimit -n xx 如`ulimit -n 4096`
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited
2、linux /etc/security/limits.conf的相关说明
limits.conf的格式如下:username|@groupname type resource limit
- username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
- type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
- resource:
core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
* soft noproc 4096
* hard noproc 4096
* soft nofile 4096
* hard nofile 4096
-
2.4 要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。使用
cat /etc/pam.d/login
查看文件中有:session required /lib/security/pam_limits.so
3、sysctl命令
sysctl -a 显示所有内核参数
sysctl -w 参数名=参数值 ,sysctl -w fs.file-max=4096 设置系统允许同时打开的最大文件数为4096
4、查看系统资源限制的命令
4.1 查看所有用户创建的进程数
4.2 最大打开文件描述符数
4.3 进程最大打开文件描述符数
* soft nofile 4096
* hard nofile 4096
-
注意:设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后将无法正常登录。
4.4 查看当前系统使用的打开文件描述符数,其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max
4.5 通过使用
ulimit -a
来查看所有限制值
4.6 使用命令
lsof -n | awk '{print $2}' | sort|uniq -c | sort -nr|more
查看当前系统各个进程产生了多少句柄,第一列为句柄数,第二列为进程ID,losf命令用于查看当前系统所打开的fd的数量。使用命令ps -ax|grep 669
查看进程ID对应的应用程序是哪个。
查看对应的进程
4.6 修改TCP连接关闭的TIME_WAIT的2MSL时间(默认为2分钟)