ulimit -a详解

ulimit的功能描述:

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


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


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


工作中最长用的参数:

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

ulimit -H    设置硬件资源限制

ulimit -S    设置软件资源限制

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


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

格式:<domain>      <type>  <item>         <value>

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)


spacer.gifwKioL1XCzcPjXnpjAAG0KZ-3zqc094.jpg

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

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



你可能感兴趣的:(ulimit,-a)