導航:首頁 > 操作系統 > linux句柄限制

linux句柄限制

發布時間:2025-04-29 04:20:07

❶ 如何修改linux單進程能夠打開的最大文件句柄數

修改文件句柄數在Linux下,我們使用ulimit -n 命令可以看到單個進程能夠打開的最大文件句柄數量(socket連接也算在裡面)。系統默認值1024。

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

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

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

1.# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
2. 131 24204
3. 57 24244
4. 57 24231
5. 56 24264

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

1.ps -aef|grep 24204
2.mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld

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

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

1.ulimit -HSn 4096


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

/////////////////////////////////////////////////////////////////////////////

在 Linux下面部署應用的時候,有時候會遇上Socket/File: Can't open so many
files的問題,其實Linux是有文件句柄限制的(就像WinXP?),而且默認不是很高,一般都是1024,作為一台生產伺服器,其實很容易就達到
這個數量,因此我們需要把這個值改大一些。

大概知道ulimit這個命令是相關的,上Google搜索了一下,大多數說的很含糊,也沒有統一說一下,經過兩個小時看了不少文章終於弄清楚ulimit相關的一些配置問題。

我們可以用ulimit -a來查看所有限制值,我只關心文件句柄數量的問題

open files (-n) 1024

這個就是限制數量

這里,有很多ulimit的文章都說的很含糊,究竟這個1024是系統的限制,還是用戶的限制呢。其實,這個是用戶限制來的,完整的說法,應該是當前用戶准備要運行的程序的限制。

1、這個限制是針對單個程序的限制

2、這個限制不會改變之前已經運行了的程序的限制

3、對這個值的修改,退出了當前的shell就會消失

比如說,我先運行了一個程序A,然後通過ulimit修改了限制為2048,然後運行B,然後退出了shell再登錄,然後運行C。那就只有B可以打開2048個句柄。

如果我們需要改變整體的限制值,或者我們運行的程序是系統啟動的,應該怎麼處理呢

其中一個方法,是想ulimit修改命令放入/etc/profile裡面,但是這個做法並不好

正確的做法,應該是修改/etc/security/limits.conf

裡面有很詳細的注釋,比如

* soft nofile 2048

* hard nofile 32768

就可以將文件句柄限制統一改成軟2048,硬32768

這里涉及另外一個問題,什麼是軟限制,什麼是硬限制

硬限制是實際的限制,而軟限制,是warnning限制,只會做出warning

其實ulimit命令本身就有分軟硬設置,加-H就是硬,加-S就是軟

默認顯示的是軟限制,如果修改的時候沒有加上的話,就是兩個一起改

配置文件最前面的一位是domain,設置為星號代表全局,另外你也可以針對不同的用戶做出不同的限制

修改了,重新登錄用ulimit一開就立刻生效了,不過之前啟動過的程序要重新啟動才能使用新的值。我用的是CentOS,似乎有些系統需要重啟才能生效。

ulimit其實就是對單一程序的限制

那系統總限制呢

其實是在這里,/proc/sys/fs/file-max

可以通過cat查看目前的值,echo來立刻修改

另外還有一個,/proc/sys/fs/file-nr

只讀,可以看到整個系統目前使用的文件句柄數量

查找文件句柄問題的時候,還有一個很實用的程序lsof

可以很方便看到某個進程開了那些句柄

也可以看到某個文件/目錄被什麼進程佔用了。

❷ 修改linux的最大文件句柄數限制

修改linux的最大文件句柄數限制對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到too
many
files
open的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:1lsof
-n
|awk
'{print
$2}'|sort|uniq
-c
|sort
-nr|more修改linux的最大文件句柄數限制的方法:
1)ulimit
-n
65535
在當前session有效,用戶退出或者系統重新後恢復默認值
2)修改profile文件:在profile文件中添加:ulimit
-n
65535
只對當個用戶有效
3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-當前session中運行ulimit
-a命令無法顯示)[html]
*
soft
nofile
32768
#限制單個進程最大文件句柄數(到達此限制時系統報警)
*
hard
nofile
65536
#限制單個進程最大文件句柄數(到達此限制時系統報錯)
4)修改文件:/etc/sysctl.conf。在文件中添加:[html]
fs.file-max=655350
#限制整個系統最大文件句柄數
運行命令:/sbin/sysctl
-p
使配置生效

❸ Linux之文件句柄

ulimit:


1,查看進程允許打開的最大文件句柄數


ulimit -n


2,設置進程能打開的最大文件句柄數


ulimit -n xxx


-H 指定資源的硬限制


-S 指定資源的軟限制


hard 代表當前硬限制


soft 代表當前軟體限制


unlimited 代表不限制.


3, 文件限制配置文件


/etc/security/limits.conf



4,文件句柄最大數據配置


配置文件:/proc/sys/fs/file-max


這個參數的默認值和內存大小有氏談早關系,可以使用公式:file-max 內存大小/ 10k.


4.1 建議將整個系統的文件句柄值至少設置為 65536


4.2 echo "65536" > /proc/sys/fs/file-max


4.3 sysctl -w fs.file-max=65536


4.4 echo "fs.file-max=65536" >> /etc/sysctl.conf



5,文件句柄使用情況配置文件:/proc/sys/fs/file-nr



這三個值分別指:系統已經分配出去的句柄數、已經分配但是還沒有使用的句柄數以及系統最大的句柄數殲雀(和file-max一侍滾樣)。


6,查看進程打開的文件句柄數


lsof:列出當前系統打開文件的工具。


❹ linux高並發http調用介面句柄不釋放

題主是否想詢問「linux高並發http調用介面句柄不釋放的解決辦法」。冊租
1、設置連接超時時間:可以設置合理的連接超時時間,例如5秒或者10秒等,超過這州李兆個時間就主動斷開連擾襲接並釋放句柄,避免長時間佔用資源。
2、增加進程限制:可以通過修改系統參數,增加進程可使用的文件句柄數量限制,使程序能夠處理更多的並發請求。可以通過ulimit命令或者修改/etc/security/limits.conf文件來實現。

❺ linux修改句柄數不生效

linux修改句柄數不生效是整個系統對句柄數進行限制了。linux在整個系統層面和單個進程兩個層面對打開的文件句柄進行限制。通過ulimit-n可以對該值進行臨時修改。永久生效,需要修改配置文件etc、security、limits.conf,softnofile10000、hardnofile10000追加到配置文件中。

閱讀全文

與linux句柄限制相關的資料

熱點內容
西夏pdf 瀏覽:223
coloros備份後的文件夾 瀏覽:124
linux源碼pdf 瀏覽:789
什麼app在微信小程序里看電視電影 瀏覽:110
伺服器dns地址fec0 瀏覽:327
化州用什麼app交社保 瀏覽:494
linuxvi怎麼打開 瀏覽:245
程序員的電視劇完整版資源 瀏覽:921
運行時間軸的腳本命令是哪個 瀏覽:620
怎麼部署rtx伺服器 瀏覽:899
手機qq怎麼壓縮視頻文件 瀏覽:530
魔獸釣魚起鉤演算法 瀏覽:474
安卓手機怎麼知道蘋果手機在哪裡 瀏覽:830
華為雲伺服器企業試用 瀏覽:109
CRYPTO加密是什麼 瀏覽:49
平安三號壓縮包 瀏覽:330
潘石屹老師編程 瀏覽:833
pdf轉轉換成圖片 瀏覽:472
下載解壓球游戲 瀏覽:831
不用海綿不用棉花做解壓神器 瀏覽:846