查看系統(tǒng)允許的最大線程數(shù):
cat /proc/sys/kernel/threads-max
Linux無法直接控制單個(gè)進(jìn)程可擁有的線程數(shù),但有參考公式max = VM/stack_size杂曲,默認(rèn)stack為8k,可通過降低stack大小或增加虛擬內(nèi)存來調(diào)大每個(gè)進(jìn)程可擁有的最大線程數(shù)袁余;
對(duì)于支持多線程的程序如Java擎勘,有可能會(huì)遇到一個(gè)進(jìn)程無法創(chuàng)建更多線程的情形,其原因多種多樣颖榜,而OS端可能由此參數(shù)造成.
查看系統(tǒng)允許的最大進(jìn)程數(shù):
cat /proc/sys/kernel/pid_max
ulimit -a 顯示當(dāng)前所有的資源限制
root用戶下執(zhí)行 ulimit -a 然后查看 max user processes 這個(gè)值通常是系統(tǒng)最大線程數(shù)的一半:/proc/sys/kernel/threads-max/2
max user processes 62879
/proc/sys/kernel/threads-ma 125758
max user processes 當(dāng)前用戶同時(shí)打開的進(jìn)程(包括線程)的最大個(gè)數(shù)為
普通用戶下 ulimit -u 出現(xiàn)的max user processes的值 默認(rèn)是 /etc/security/limits.d/20-nproc.conf(centos6 是90-nproc.conf) 文件中的
普通用戶默認(rèn)是1024
打開/etc/security/limits.conf (部分的系統(tǒng)是在/etc/security/limits.d/90-nproc.conf)
soft xxx : 代表警告的設(shè)定棚饵,可以超過這個(gè)設(shè)定值,但是超過后會(huì)有警告掩完。
hard xxx : 代表嚴(yán)格的設(shè)定噪漾,不允許超過這個(gè)設(shè)定的值。
如:soft 設(shè)為1024且蓬,hard設(shè)為2048 欣硼,則當(dāng)你使用數(shù)在1~1024之間時(shí)可以隨便使用,1024~2048時(shí)會(huì)出現(xiàn)警告信息恶阴,大于2048時(shí)诈胜,就會(huì)報(bào)錯(cuò)。
nproc : 是操作系統(tǒng)級(jí)別對(duì)每個(gè)用戶創(chuàng)建的進(jìn)程數(shù)的限制
nofile : 是每個(gè)進(jìn)程可以打開的文件數(shù)的限制
設(shè)置限制數(shù)量冯事,第一列表示用戶焦匈,* 表示所有用戶
soft nproc :?jiǎn)蝹€(gè)用戶可用的最大進(jìn)程數(shù)量(超過會(huì)警告);
hard nproc:?jiǎn)蝹€(gè)用戶可用的最大進(jìn)程數(shù)量(超過會(huì)報(bào)錯(cuò));
soft nofile :可打開的文件描述符的最大數(shù)(超過會(huì)警告);
hard nofile :可打開的文件描述符的最大數(shù)(超過會(huì)報(bào)錯(cuò));
注:①一般soft的值會(huì)比hard小,也可相等昵仅。
②/etc/security/limits.d/里面配置會(huì)覆蓋/etc/security/limits.conf的配置
③只有root用戶才有權(quán)限修改/etc/security/limits.conf
④如果limits.conf沒有做設(shè)定括授,則默認(rèn)值是1024
重啟后生效
reboot
查詢當(dāng)前某程序的線程數(shù)
pstree -p 進(jìn)程號(hào) | wc -l
管道符號(hào)"|"左邊命令的輸出作為右邊命令的輸入
直接修改/etc/security/limits.conf 文件中的 * soft nproc 65535 值后,普通用戶最大進(jìn)程數(shù)無法達(dá)到65535 岩饼,因?yàn)橛脩舻膍ax user processes的值荚虚,最后是受全局的kernel.pid_max的值限制。也就是說kernel.pid_max=1024 籍茧,那么你用戶的max user processes的值是127426 版述,用戶能打開的最大進(jìn)程數(shù)還是1024。
永久修改系統(tǒng)最高進(jìn)程數(shù)的方法
在/etc/sysctl.conf中添加kernel.pid_max = 65535
vim /etc/sysctl.conf
kernel.pid_max = 65535
或者:
echo "kernel.pid_max = 65535" >> /etc/sysctl.conf
然后重啟機(jī)器寞冯。
臨時(shí)修改的方法:
echo 65535 > /proc/sys/kernel/pid_max
所以以上都操作完成后渴析,才算是正確修改了max user processes 的值