前言:
参加unix/linux相关高级研发职位时,是否经常会被文档,单机允许最大进程数、线程数和socket连接数,而你却感到束手无措呢?本文给你一个最为详细的答案。
一、最大进程数
运行linux ulimit -a指令,我们可以看到:max user processes =1024 运行结构如下图所示:
二、最大线程数
<code>3660</code>
看到最大线程数的限制了吗?3660
三、最大socket连接数
关于最大socket连接数,因为一个socket连接需要占用一个文件句柄,所以支持打开的连接数就是文件数句柄数:open files (-n) 1024
四、一个进程允许启动的最大线程数
linux环境,一个进程分配的虚拟内存空间是4g,可用2g,每个线程stack空间为10m,2048/10 = 200,所以一般的单进程能开通的线程数也就可以确定了。约为200个。
五、ulimit命令详解
参 数:
-a 显示目前资源限制的设定。
-c <core文件上限> 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为kb。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-h 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为kb。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆叠大小> 指定堆叠的上限,单位为kb。
-s 设定资源的弹性限制。
-t <cpu时间> 指定cpu使用时间的上限,单位为秒。
-u <程序数目> 用户最多可开启的程序数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为kb。