打開文件數限制功能不斷地製造問題


檢查您的打開文件數量的限制,它們不停地以一種奇怪的方式損害咱們的潛在客戶。應該杜絕此事再次發生,可是要發現這種危害,尤爲是對於不一樣的Linux分佈式系統而言,確實很困難。分佈式

打開文件對於系統操做而言相當重要。由於它們定義了一個進程所能打開的總的文件句柄數量,要記住,在Unix/Linux上,全部的一切都是以文件的形式存在的,包括全部的的實體文件,尤爲是TCP/IP 及Unix套接字也算做文件。這意味着像Nginx或MySQL等服務可以耗盡全部文件句柄,包括用戶TCP/IP 鏈接及磁盤上的文件句柄。因此,很輕易地就可以消耗完一臺中等負荷系統的全部可用文件量。ide

許多Linux系統默認的打開文件數量爲1024個,這意味着在Nginx或MySQL系統中,若是有幾百個用戶/鏈接和打開文件的話,就很容易達到文件用量上限。當達到系統上限時,隨着用戶登陸/登出系統,會有不少奇怪的故障隨時發生。有些服務會在日誌中報告錯誤,可是絕大多數服務不會給您任何通知。spa

爲避免此類故障,您須要重設默認值,設置地址在/etc/security/limits.conf目錄下。咱們經常使用的最小值是16535個,可是後來在不少系統上使用了65535個。如您用的是大型系統,還使用了HAPeoxy, 您可將該值設的更高,如256,000或更高的值。因此,爲使工做趁心如意,將用戶(*表示系統上的全部用戶)的軟件及硬件限制設置在65535。需登出再登入才能使設置生效。日誌

同時,您要明白,因爲limits.conf對於根用戶而言須要特定的行,因此Debian/Ubuntu系統會遇到一些特殊的問題。許多系統(如CentOS),都使用「*」來表示全部用戶,可是以Debian爲基礎的系統「*」並不包括根用戶,看起來沒有意義,可是事實就是這樣的。blog

最後,請記住有一個Linux內核系統級的參數,即fs.file-max.可將打開文件數量設置到最大值,該參數也可根據RAM或其它因素(根據分配狀況),進行動態設置,可是在繁忙的系統中,該參數的值可能很小。咱們一般將其設置爲500K或1百萬,但前提是確保系統不會在使用過程當中達到這一上限。能夠經過sysctl及sysctl.conf進行設置。進程


(Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文請點此查看
get

相關文章
相關標籤/搜索