Linux资源限制配置

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的相关说明

  • 2.1 文件详细注释

在这里插入图片描述

  • 2.2 文件详细注释说明
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 - 此用户允许登录的最大数目
  • 2.3 使用例子,在/etc/security/limits.conf加入以下内容表示限制了任意用户的最大线程数和文件数为4096
*        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 查看所有用户创建的进程数
  • 使用命令ps h -Led -o user | sort | uniq -c | sort -n查看所有用户创建的进程数,第一列是进程数,第二列为用户

在这里插入图片描述

4.2 最大打开文件描述符数
  • 使用命令cat /proc/sys/fs/file-max查看系统最大打开文件描述符数

在这里插入图片描述

  • 使用命令echo 1000000 > /proc/sys/fs/file-max临时修改系统最大打开文件描述符数,重启后失效

在这里插入图片描述

  • 在/etc/sysctl.conf中加入fs.file-max = 1000000,可以永久性设置系统最大打开文件描述符数。
4.3 进程最大打开文件描述符数
  • 使用命令ulimit -nulimit -Sn查看进程最大打开文件描述符数的soft limit

在这里插入图片描述

  • 使用命令ulimit -Hn查看进程最大打开文件描述符数的hard limit

在这里插入图片描述

  • 通过ulimit -Sn xxx临时设置最大打开文件描述符数的soft limit,注意soft limit必须小于hard limit

在这里插入图片描述

  • 通过ulimit -n xxx同时临时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit

在这里插入图片描述

  • root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为4096,hard limit为4096。重启生效。
* 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分钟)
  • 修改/etc/sysctl.conf文件,把net.ipv4.tcp_fin_timeout=30(建议小于30秒为宜),修改后执行/sbin/sysctl -p让参数生效。
  • 使用netstat -n|awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a] }'查看各连接状态的计数情况。

在这里插入图片描述

  • 使用netstat -ant|grep -i "443" |grep CLOSE_WAIT|wc -l查看HTTPS的443端口的CLOSE_WAIT状态的连接数,用于查看连接未释放的个数

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,poll函数用于等待一个或多个文件描述符的I/O事件。与select和epoll相比,poll函数的不足之处在于效率较低,因为它需要遍历整个文件描述符集合。 在Linux中使用poll函数时,有一个线程资源限制,即可以同时处理的线程数量有限。这是因为操作系统对每个进程或线程的资源分配是有一定限制的,包括线程栈大小、文件描述符数量、内存使用等等。 当使用poll函数时,每个线程都会占用一定的系统资源。如果创建过多的线程并同时调用poll函数,可能会导致系统资源不足的问题,比如资源耗尽、内存溢出等。因此,需要合理控制线程的数量,以避免资源限制的问题。 为了克服线程资源限制,可以采取以下几种方法: 1. 使用线程池:通过线程池管理线程,在需要使用poll函数的时候从线程池中获取一个线程,并在使用完后将其放回线程池中,避免创建过多的线程,从而降低系统资源的消耗。 2. 调整系统资源限制:通过修改系统配置文件或运行时参数,增加线程栈大小、文件描述符数量等资源限制值,从而扩大系统能够处理的线程数量。但是需要注意,调整这些系统资源限制可能会影响其他方面的性能。 3. 使用更高效的I/O模型:如果对响应时间有严格要求,并且在处理大量并发连接的情况下,考虑使用更高效的I/O模型,如epoll等,以提高系统的性能和资源利用率。 总之,在使用linux的poll函数时,需要注意线程资源限制,合理控制线程数量,防止资源耗尽等问题的发生。通过合理的线程管理和配置系统资源限制,可以提高应用程序的性能和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值