Linux服務(wù)器性能的重要指標(biāo):打開文件數(shù)的限制

文件是Linux系統(tǒng)中的一切事物的存在形式,計(jì)算機(jī)中的數(shù)據(jù)和硬件都是通過文件的形式進(jìn)行管理,Linux的文件主要有普通文件、文件夾、設(shè)備文件、鏈接文件、管道文件、套接字文件(數(shù)據(jù)通信的接口)等類型,Linux 中的各種事物比如像文檔、文件夾、鍵盤、監(jiān)視器、硬盤、可移動(dòng)媒體設(shè)備、打印機(jī)、調(diào)制解調(diào)器、虛擬終端等等都是定義在文件系統(tǒng)空間下的字節(jié)流。

因此在Linux系統(tǒng)上的web程序,在進(jìn)行TCP連接時(shí),系統(tǒng)為每個(gè)TCP連接創(chuàng)建一個(gè)socket句柄,而每個(gè)句柄也是一個(gè)文件句柄,所以web程序?qū)ξ募牟僮髑闆r,是影響到服務(wù)器性能的重要指標(biāo),像網(wǎng)站在高流量高并發(fā)的場景下出現(xiàn)"Too many open files"的異常就是因?yàn)榇蜷_的文件數(shù)超過限制,而程序中對資源(包括圖片、音視頻資源)、網(wǎng)頁、以及接口的請求在Linux系統(tǒng)里的表現(xiàn)為對文件的訪問,如果打開文件數(shù)超出了系統(tǒng)限制(系統(tǒng)級和用戶級)的數(shù)量,就會(huì)拒絕接下來的文件訪問當(dāng)前用戶級的文件數(shù)限制,可以通過 ulimit -n 來查看,如圖:?

而系統(tǒng)級別的文件數(shù)限制,則通過sysctl -a來查看,如下圖:?


一般系統(tǒng)最大文件數(shù)會(huì)根據(jù)硬件資源計(jì)算出來的,如果強(qiáng)行需要修改最大打開文件數(shù)可以通過ulimit -n 10240來修改,當(dāng)這種方式只對當(dāng)前進(jìn)程有效,如果需要永久有效則需要修改/etc/security/limits.conf(重啟系統(tǒng)生效),如下圖:?


其中:

root :指定用戶,如對所有用戶,則寫 *

soft:軟限制

hard:硬件限制

nofile 是代表最大文件打開數(shù)

除此之外,下面是一些打開文件數(shù)操作相關(guān)的指令,僅供參考:

1、查看所有進(jìn)程的文件打開數(shù):

lsof |wc -l?


2、查看某個(gè)進(jìn)程打開的文件數(shù):

lsof -p pid |wc -l


3、查看系統(tǒng)中各個(gè)進(jìn)程分別打開了多少句柄數(shù):

lsof -n|awk ‘{print $2}’|sort|uniq -c|sort -nr|more


覺得本文對你有幫助?請分享給更多人

關(guān)注「編程無界」,提升裝逼技能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容