檢查您的開啟檔案數量的限制,它們不停地以一種奇怪的方式損害我們的潛在客戶。應該杜絕此事再次發生,但是要發現這種危害,尤其是對於不同的linux分布式系統而言,確實很困難。
開啟檔案對於系統操作而言至關重要。因為它們定義了乙個程序所能開啟的總的檔案控制代碼數量,要記住,在unix/linux上,所有的一切都是以檔案的形式存在的,包括所有的的實體檔案,尤其是tcp/ip 及unix套接字也算作檔案。
這意味著像nginx或mysql等服務能夠耗盡所有檔案控制代碼,包括使用者tcp/ip 連線及磁碟上的檔案控制代碼。所以,很輕易地就能夠消耗完一台中等負荷系統的所有可用檔案量。
許多linux系統預設的開啟檔案數量為1024個,這意味著在nginx或mysql系統中,如果有幾百個使用者/連線和開啟檔案的話,就很容易達到檔案用量上限。當達到系統上限時,隨著使用者登入/登出系統,會有很多奇怪的故障隨時發生。有些服務會在日誌中報告錯誤,但是絕大多數服務不會給您任何通知。為避免此類故障,您需要重設預設值,設定位址在/etc/security/limits.conf目錄下。我們常用的最小值是16535個,但是後來在很多系統上使用了65535個。如您用的是大型系統,還使用了hapeoxy, 您可將該值設的更高,如256,000或更高的值。所以,為使工作稱心如意,將使用者(*表示系統上的所有使用者)的軟體及硬體限制設定在65535。需登出再登入才能使設定生效。
同時,您要明白,由於limits.conf對於根使用者而言需要特定的行,所以debian/ubuntu系統會遇到一些特殊的問題。許多系統(如centos),都使用「*」來表示所有使用者,但是以debian為基礎的系統「*」並不包括根使用者,看起來沒有意義,但是事實就是這樣的。
最後,請記住有乙個linux核心系統級的引數,即fs.file-max.可將開啟檔案數量設定到最大值,該引數也可根據ram或其它因素(根據分配情況),進行動態設定,但是在繁忙的系統中,該引數的值可能很小。我們通常將其設定為500k或1百萬,但前提是確保系統不會在使用過程中達到這一上限。可以通過sysctl及sysctl.conf進行設定。
(authored by steve mushero / chinanetcloud ceo & cto 本部落格英文原文請點此檢視
)
開啟檔案數限制功能不斷地製造問題
檢查您的開啟檔案數量的限制,它們不停地以一種奇怪的方式損害我們的潛在客戶。應該杜絕此事再次發生,但是要發現這種危害,尤其是對於不同的linux分布式系統而言,確實很困難。開啟檔案對於系統操作而言至關重要。因為它們定義了乙個程序所能開啟的總的檔案控制代碼數量,要記住,在unix linux上,所有的一...
linux下修改程序開啟檔案數限制
liunux更改 open files限制。ulimit a core file size blocks,c 0 data seg size kbytes,d unlimited scheduling priority e 0 file size blocks,f unlimited pending...
ulimit n開啟檔案數 和總的開啟檔案數
ulimit n 是乙個程序最大的開啟檔案書,乙個nginx 最大的併發量 這表示當前使用者的每個程序最多允許同時開啟1024個檔案 可以通過 ulimit n 數字更該,但是有的有限制需要更改軟限制和硬線制 等 可以去網上搜一下。ulimit 用於限制 shell 啟動程序所占用的資源,支援以下各...