歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux打開最大文件句柄數

Linux打開最大文件句柄數

日期:2017/2/28 17:35:18   编辑:Linux教程
在Linux下,我們使用ulimit -n命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。

  對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到“too many files open”的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more  

  在系統訪問高峰時間以root用戶執行上面的腳本,可能出現的結果如下:

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

  131 24204 

  57 24244  

   57 24231  

  56 24264

  其中第一列是打開的文件句柄數量,第二列是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。

  ps -aef|grep 24204

  mysql  24204 24162 99 16:15 ?    00:24:25 /usr/sbin/mysqld

  哦,原來是mysql進程打開最多文件句柄數量。但是他目前只打開了131個文件句柄數量,遠遠底於系統默認值1024。

  但是如果系統並發特別大,尤其是squid服務器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:ulimit -HSn 4096

  以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄數越多響應時間肯定會越慢。設定句柄數量後,系統重啟後,又會恢復默認值。如果想永久保存下來,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最後。
Copyright © Linux教程網 All Rights Reserved