linux下limits.conf文件配置

为何需要文件描述符?
原因1 – 资源问题:节约内存资源。服务器上,每个打开的文件都需要消耗内存来管理。

原因2 – 安全问题:如果不限制的话,如果发生情况为,启动一个进程只是无限的创建和打开新的文件,会让服务器崩溃。

所以限制文件描述符的数量对于linux系统的稳定性是非常重要的。

配置文件
inux资源限制配置文件是/etc/security/limits.conf;
限制用户进程的数量对于linux系统的稳定性非常重要。
limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。
除了

/etc/security/limits.conf,

/etc/security/limits.d/目录下,里面配置会覆盖/etc/security/limits.conf的配置

可以限制的资源类型如下:

所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。

第一列表示用户和组(@开头)。第二列表示软限制还是硬限制,第三列表示限制的资源类型,第四列表示限制的最大值

hard和soft的区别: soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错,一般情况下都是设为同一个值。

core是内核文件,nofile是文件描述符,noproc是进程,一般情况下只限制文件描述符数和进程数就够了

复制代码
#

#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4

End of file

-----------分割线,上面是配置文件的模板,下面是自己添加的------------------------

  •             soft     nofile         655350      #表示任何一个用户可以打开的最大的文件描述符数量
    
  •             hard    nofile         655350
    
  •             soft    nproc          655350      #表示任何一个用户可以打开的最大的进程数
    
  •            hard    nproc          655350
    

@student hard nofile 65535 #student组中的任何人最多能打开文件描述符数量是65535,并且会在打开65000个时发出警告
@student soft nofile 65000

@student hard nproc 50 #student组中的任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告
@student soft nproc 30
复制代码
系统级别设置
1、查看系统最大文件描述符

$ cat /proc/sys/fs/file-max
186405

2、设置系统最大文件描述符

临时性设置

$ echo 1000000 > /proc/sys/fs/file-max
永久性设置

在/etc/sysctl.conf中设置,应该设什么值是最佳实践?比如8G的内存,设为8192/2 * 256 = 524288

fs.file-max = 1000000

用户级别设置
1、查看 ulimit命令,-n默认查看的是soft limit,这个值是从/etc/security/limits.conf文件的* soft nofile 655350来的

$ ulimit -n
170000

查看hard limit

$ ulimit -Hn
170000
2、设置

临时性:

通过ulimit -Sn设置最soft limit,注意soft limit必须小于hard limit

$ ulimit -Sn 160000

通过ulimit -Hn设置最Hard limit

$ ulimit -Hn 160000

同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。

$ ulimit -n 180000

永久性:

root权限下,在/etc/security/limits.conf中添加如下两行,*表示所有用户,重启生效

  • soft nofile 102400

  • hard nofile 104800

注意:设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后将无法正常登录。

查看当前系统使用的打开文件描述符数
$ cat /proc/sys/fs/file-nr
2176 0 2048000

其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。

总结
知道了/etc/security/limits.conf中的参数含义之后,那么如何配置nofile,确定nofile的最大值呢
解答:使用ulimt -n命令进行测试,如果小于系统允许的最大值,设置成功,大于最大值,系统会报错提示。

复制代码
$ ulimit -n 1100000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 1048576
$ ulimit -n 1048577
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 1048575
$ ulimit -n 1048576
复制代码
ulimit -a/n/H/S/u 都有什么含义
ulimit -a 显示当前所有的资源限制
ulimit -H 设置硬件资源限制
ulimit -S 设置软件资源限制
ulimit -n 设置进程最大打开文件描述符数
ulimit -u <程序数目>  用户最多可开启的程序数目
a. 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max

b. 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
c. nofile的soft limit不能超过其hard limit
d. nofile的hard limit不能超过/proc/sys/fs/nr_open

链接:https://www.jianshu.com/p/47336fcd22da

item:有以下几种:
core - 限制内核文件的大小(KB)

date - 最大数据大小(KB)

fsize - 最大文件大小(KB)

memlock - 最大锁定内存地址空间(KB)

nofile - 打开的文件描述符的最大数目**(经常设置)**

rss - 最大持久设置大小(KB)

stack - 最大堆栈大小(KB)

cpu - 最大CPU时间(min)

noproc - 过程最大数量

as - 地址空间限制(KB)

maxlogins - 此用户的最大登录数量

maxsyslogins - 在系统上登录的最大数目

priority - 优先级运行用户进程

locks - 文件的最大数量锁定用户可容纳

sigpending - 最大挂起信号的数量

msgqueue - 通过POSIX消息队列使用的最大内存(字节)

nice - 最大不错优先允许提高到值:[-20,19]

rtprio - 最大实时优先

ulimit命令
命令参数

-a 显示所有限制

-c core文件大小的上限

-d 进程数据段大小的上限

-f shell所能创建的文件大小的上限

-m 驻留内存大小的上限

-s 堆栈大小的上限

-t 每秒可占用的CPU时间上限

-p 管道大小

-n 打开文件数的上限

-u 进程数的上限

-v 虚拟内存的上限

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值