linux下用ulimit設(shè)置連接數(shù)最大值,默認(rèn)是1024矗晃,在高負(fù)載下要設(shè)置為更高仑嗅。
ulimit只能做臨時(shí)修改,重啟后失效张症。
ulimit -HSn 65535
ulimit -a/n/H/S 都有什么含義?
ulimit -a 顯示當(dāng)前所有的資源限制
ulimit -H 設(shè)置硬件資源限制
ulimit -S 設(shè)置軟件資源限制
ulimit -n 設(shè)置進(jìn)程最大打開(kāi)文件描述符數(shù)
ulimit -u <程序數(shù)目> 用戶最多可開(kāi)啟的程序數(shù)目
總結(jié)
- 所有進(jìn)程打開(kāi)的文件描述符數(shù)不能超過(guò)/proc/sys/fs/file-max
- 單個(gè)進(jìn)程打開(kāi)的文件描述符數(shù)不能超過(guò)user limit中nofile的soft limit
- nofile的soft limit不能超過(guò)其hard limit
- nofile的hard limit不能超過(guò)/proc/sys/fs/nr_open
這個(gè)文件句柄限制怎么設(shè)置了/etc/security/limits.conf 對(duì)進(jìn)程都無(wú)效呢仓技?
在修改/etc/security/limits.conf 以及使用 ulimit -n命令進(jìn)行修改文件句柄數(shù)量時(shí),是需要重新進(jìn)入終端方可生效俗他。
服務(wù)器都重啟了一遍了脖捻,就是不生效!
百度兆衅,谷歌查找資料地沮,據(jù)說(shuō)還要修改 /etc/security/limits.d/20-nproc.conf < /etc/security/limits.conf 限制實(shí)際取決于 /etc/security/limits.d/20-nproc.conf的配置。
也就是說(shuō)哪怕/etc/security/limits.conf設(shè)置最大打開(kāi)數(shù)是65535羡亩,而/etc/security/limits.d/20-nproc.conf里配的是4096摩疑,那最終結(jié)果還是用戶最大只能打開(kāi)4096個(gè)文件句柄,于是趕緊看了下/etc/security/limits.d/20-nproc.conf配置畏铆,果然是4096雷袋。
最后有一個(gè)好的發(fā)現(xiàn),說(shuō)這個(gè)限制是在進(jìn)程里面限制的及志,于是找了個(gè)httpd.service的啟動(dòng)腳本進(jìn)程進(jìn)行修改,如下:
但是要是我有100個(gè)進(jìn)程寨腔,總不能修改100次吧速侈,系統(tǒng)沒(méi)這么傻逼吧,于是想到Centos7 系統(tǒng)是采用Systemd進(jìn)行管理服務(wù)的迫卢,是否會(huì)和這個(gè)有所關(guān)系呢倚搬?
在C7系統(tǒng),進(jìn)程改用了systemd代替之前SysV進(jìn)行服務(wù)管理乾蛤,原先的/etc/security/limits.conf文件配置的作用域縮小每界,只適用于通過(guò)PAM認(rèn)證登錄用戶的資源顯示,對(duì)systemd的service資源限制不生效的家卖。
在C7里面眨层,要進(jìn)行全局的配置進(jìn)程打開(kāi)文件數(shù)量,需要修改/etc/systemd/system.conf 和 /etc/systemd/user.conf 這兩個(gè)上荡,當(dāng)然趴樱,如果只是進(jìn)程修改system.conf即可馒闷,里面有兩個(gè)默認(rèn)值調(diào)整一下:
CentOS7 版本,是先讀/etc/security/limits.conf叁征,如果/etc/security/limits.d/目錄下還有配置文件的話纳账,會(huì)遍歷讀取里面文件,所以/etc/security/limits.d/里面的文件里面的配置會(huì)覆蓋/etc/security/limits.conf的配置捺疼。
在服務(wù)器硬件資源有限的情況下疏虫,最大的利用服務(wù)器資源,提高服務(wù)器的并發(fā)處理能力啤呼,是很多運(yùn)維技術(shù)人員思考的問(wèn)題卧秘。
要提高Linux系統(tǒng)下的負(fù)載能力,我們需要選擇可以承載更高并發(fā)的web服務(wù)器媳友,例如nginx這種天生的并發(fā)悍將斯议,如果是執(zhí)意使用apache,那么也應(yīng)該在worker模式下工作醇锚。
除此之外哼御,對(duì)于系統(tǒng)內(nèi)核的調(diào)優(yōu)必不可少,但是最能解決服務(wù)器負(fù)載問(wèn)題的方法就是配置的提升焊唬,既穩(wěn)定恋昼,又有效的方法。
#注釋原有的nofile行
sed -i "/nofile/s/^/#/g" /etc/security/limits.conf
#注釋原有的nproc行
sed -i "/nproc/s/^/#/g" /etc/security/limits.conf
echo "* soft nofile 1048576" >>/etc/security/limits.conf
echo "* hard nofile 1048576" >>/etc/security/limits.conf
echo "root soft nofile 1048576" >>/etc/security/limits.conf
echo "root hard nofile 1048576" >>/etc/security/limits.conf
echo "* soft nproc 65535" >>/etc/security/limits.conf
echo "* hard nproc 65535" >>/etc/security/limits.conf
echo "root soft nproc unlimited" >>/etc/security/limits.conf
echo "root hard nproc unlimited" >>/etc/security/limits.conf
#注釋原有的nproc行
sed -i "/nproc/s/^/#/g" /etc/security/limits.d/90-nproc.conf
#注釋原有的nofile行
sed -i "/nofile/s/^/#/g" /etc/security/limits.d/90-nproc.conf
echo "* soft nofile 1048576" >>/etc/security/limits.d/90-nproc.conf
echo "* hard nofile 1048576" >>/etc/security/limits.d/90-nproc.conf
echo "root soft nofile 1048576" >>/etc/security/limits.d/90-nproc.conf
echo "root hard nofile 1048576" >>/etc/security/limits.d/90-nproc.conf
echo "* soft nproc 65535" >>/etc/security/limits.d/90-nproc.conf
echo "* hard nproc 65535" >>/etc/security/limits.d/90-nproc.conf
echo "root soft nproc unlimited" >>/etc/security/limits.d/90-nproc.conf
echo "root hard nproc unlimited" >>/etc/security/limits.d/90-nproc.conf
echo "* soft memlock unlimited" >>/etc/security/limits.d/90-nproc.conf
echo "* hard memlock unlimited" >>/etc/security/limits.d/90-nproc.conf
參考
基于CentOS 7的EMQ或EMQ X百萬(wàn)級(jí)并發(fā)調(diào)優(yōu)
https://www.bianchengquan.com/article/156268.html
Elasticsearch集群優(yōu)化
https://www.cnblogs.com/david-qing/p/8560245.html
Centos7高并發(fā)優(yōu)化
https://www.modb.pro/db/159144