ulimit -a详解

ulimit的功能描述:

假设一台机器现在有10人登陆,在系统资源没有限制的情况下,一个人又打开500个文件,每个文件有10m,那这个时候系统内存的资源就收到严重的挑战



    而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联系。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。



在大型公司,有时候打的集群个访问量,有时候需要跑很多程序,有时候程序会莫名奇怪的挂掉,这个时候就需要看看你的ulimit的设置了

工作中最长用的参数:

ulimit -a 列出所有的参数选项

ulimit -H 设置硬件资源限制

ulimit -S 设置软件资源限制

ulimit -n 设置应许打开文件数

修改ulimit参数,配置文件是:/etc/security/limits.conf

格式:

domain:可以是用户或者用户组 *代表所有

type:可以有两个值,soft 和 hard

item:表示要限定的资源 可以有很多候选值,如 stack(最大堆栈大小),cpu(占用cpu的时间),nofile(最大打开文件数) 等等

例:* hard nofile 100 该行配置语句限定了任意用户所能创建的最大文件数是 100。

默认都是用的是soft

使用 ulimit 限制程序所能创建的 socket 数量
考虑到现实生活中的需求,在c/s模式中,一个服务器可能有多个客户端进行访问,如果socket数量过多,这是server就需要创建大量的socket端口,系统中往往是限制一个程序创建socket端口的个数的。那如何实现呢,当然是通过ulimit限制,细心的同学可能发现,并没有socket的参数选项,但是在linux系统中,一切皆文件,1.我们是通过设置nofile的个数来显示socket的个数的(ulimit -n),2.设置linux的最大进程数来控制(ulimit -u)

linux的系统默认是1024,但是在实际情况下往往是不够用的,可以根据自己的需要进行设置,我们单位平时设置的是196605

还有一个参数就是max user processes 最大进程数 ulimit -u 设置成196605

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐