Linux服務器性能的重要指標:打開文件數的限制

文件是Linux系統中的一切事物的存在形式,計算機中的數據和硬件都是經過文件的形式進行管理,Linux的文件主要有普通文件、文件夾、設備文件、連接文件、管道文件、套接字文件(數據通訊的接口)等類型,Linux 中的各類事物好比像文檔、文件夾、鍵盤、監視器、硬盤、可移動媒體設備、打印機、調制解調器、虛擬終端等等都是定義在文件系統空間下的字節流。web

所以在Linux系統上的web程序,在進行TCP鏈接時,系統爲每一個TCP鏈接建立一個socket句柄,而每一個句柄也是一個文件句柄,因此web程序對文件的操做狀況,是影響到服務器性能的重要指標,像網站在高流量高併發的場景下出現"Too many open files"的異常就是由於打開的文件數超過限制,而程序中對資源(包括圖片、音視頻資源)、網頁、以及接口的請求在Linux系統裏的表現爲對文件的訪問,若是打開文件數超出了系統限制(系統級和用戶級)的數量,就會拒絕接下來的文件訪問
複製代碼

當前用戶級的文件數限制,能夠經過 ulimit -n 來查看,如圖:編程

而系統級別的文件數限制,則經過sysctl -a來查看,以下圖:服務器

通常系統最大文件數會根據硬件資源計算出來的,若是強行須要修改最大打開文件數能夠經過ulimit -n 10240來修改,當這種方式只對當前進程有效,若是須要永久有效則須要修改/etc/security/limits.conf(重啓系統生效),以下圖:併發

其中:socket

root :指定用戶,如對全部用戶,則寫 *高併發

soft:軟限制性能

hard:硬件限制網站

nofile 是表明最大文件打開數spa

soft nofile (軟限制)是指Linux在當前系統可以承受的範圍內進一步限制用戶同時打開的文件數, hard nofile (硬限制)是根據系統硬件資源情況(主要是系統內存)計算出來的系統最多可同時打開的文件數量 一般軟限制小於或等於硬限制code

除此以外,下面是一些打開文件數操做相關的指令,僅供參考:

一、查看全部進程的文件打開數:

lsof |wc -l

二、查看某個進程打開的文件數:

lsof -p pid |wc -l

三、查看系統中各個進程分別打開了多少句柄數:

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

以爲本文對你有幫助?請分享給更多人

關注「編程無界」,提高裝逼技能

相關文章
相關標籤/搜索