1. 程式人生 > >運維繫統,發現報錯,開啟檔案控制代碼數太多解決方案

運維繫統,發現報錯,開啟檔案控制代碼數太多解決方案

在Linux中檢視日誌時,發現有Can’t open so many files資訊。應該是虛擬機器開啟檔案數或者sockets數太多了。

在Linux下,我們使用ulimit -n命令可以看到單個程序能夠開啟的最大檔案控制代碼數量(socket連線也算在裡面)。系統預設值1024。

對於一般的應用來說(象Apache、系統程序)1024完全足夠使用。但是如何象java等單程序處理大量請求的應用來說就有點捉襟見肘了。如果單個程序開啟的檔案控制代碼數量超過了系統定義的值,就會提到“too many files open”的錯誤提示。如下面一段小指令碼可以幫你檢視:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more


   但是如果系統併發特別大,很有可能會超過1024。這時候就必須要調整系統引數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個引數。

  1. [[email protected] ~]# ulimit -a  
  2. core file size          (blocks, -c) 0  
  3. data seg size           (kbytes, -d) unlimited  
  4. scheduling priority             (-e) 30  
  5. file size               (blocks, -f) unlimited  
  6. pending signals                 (-i) 30605  
  7. max locked memory       (kbytes, -l) 40000  
  8. max memory size         (kbytes, -m) unlimited  
  9. open files                      (-n) 1024
  10. pipe size            (512 bytes, -p) 8  
  11. POSIX message queues     (bytes, -q) 819200  
  12. real-time priority              (-r) 65  
  13. stack size              (kbytes, -s) 8192  
  14. cpu time               (seconds, -t) unlimited  
  15. max user processes              (-u) 30605  
  16. virtual memory          (kbytes, -v) unlimited  
  17. file locks                      (-x) unlimited  

修改方法:

在檔案/etc/security/limits.conf中新增:

  1. * soft nofile 65536  
  2. * hard nofile 65536  
  3. 只需要新增上面兩句。
  4. 最後系統使用這個

    # End of file

    * - nofile 102400

    * - nproc 102400

解釋:*代表domain,就是全域性的意思,可以改成具體的使用者名稱來限制某個使用者。
soft / hard:這個當中的硬限制是實際的限制,而軟限制,是warnning限制,只會做出warning.
nofile 代表max number of opened file,

65536:代表最大開啟控制代碼數
另:如果只是新增硬限制,而沒有新增軟限制,是沒有作用的,使用ulimit -a 檢視還是沒變。
重啟機器就ok了

相關推薦

維繫發現開啟檔案控制解決方案

在Linux中檢視日誌時,發現有Can’t open so many files資訊。應該是虛擬機器開啟檔案數或者sockets數太多了。 在Linux下,我們使用ulimit -n命令可以看到單個程序能夠開啟的最大檔案控制代碼數量(socket連線也算在裡面)。系統預設值

安裝Python3.5後pipFatal error in launcher: Unable to create process using '"'解決方案

c:\Python35\Scripts>pip3ERROR:Fatal error in launcher: Unable to create process using '"'解決方法:python3:python3 -m pip install --upgrade pip

mina通訊對於高併發的產生:java.io.IOException: Too many open files(開啟檔案控制過多問題)

起因:由於業務系統有多個定時任務定時訪問銀行端,銀行每天也有大量業務訪問業務系統,都是通過mina通訊,部署在測試環境的系統每過一兩天開啟控制代碼過萬,生產的也是一週左右不重啟業務系統就會爆掉。一開始並不清楚到底是哪方面原因導致控制代碼增長這麼快,因為這是一個老系統,經過多次升級,大量的併發、多執行緒,所以只

(已解決)拷貝dll檔案到另一個專案編譯不執行“未能載入檔案或程式集...”

未能載入檔案或程式集“JUtility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一個依賴項。試圖載入格式不正確的程式。   需要注意該dll生成的目標平臺:右擊專案-生成-目標平臺, 引用這個dll的專案

2018年10月8日django檢視版本命令python2&3中print區別iterableSSH,pycharm/ubuntu顏色設定

檢視Django版本的命令: 1. 在終端中輸入: python -m django –-version 2. 進入python互動環境:        import django    &nb

Android 使用Sqlite資料庫時插入了資料但查詢不到

Android 使用Sqlite資料庫時,插入了資料,不報錯,但查詢不到 (初學者)今天寫安卓的時候遇見這麼一個問題,我覺得挺有趣的,就是cursor查詢時,用cursor.getString(1),這種居然不能精確定位到行位置(可能是從0開始?有時間再細糾一下),得用cur

Eclipse匯入專案之後專案解決辦法

有時候匯入了一個專案之後,專案就會報錯,到處都是紅叉,下面是解決辦法。 1.Java執行環境不一致。 在專案名上右鍵-->Build Path  -->Configuer  Build

rabbitmq 3.7.0版本新增trace外掛後新增以及解決方案(可用方案

在建立rabbitmq叢集環境後,為了跟蹤訊息消費機制,新增了trace外掛,具體指令碼請參考: # 檢視已安裝的外掛 ./rabbitmq-plugins list ./rabbitmq-plugins enable rabbitmq_tracing ./rabbitmqctl trace

svn全部更新專案後xxx cannot be to a type/variable之類的並且package/import都

原因:這是因為svn全部更新將專案中的.project檔案也更新下來了, 解決辦法:將workspace中的.project檔案備份後刪除,然後clean專案,clean完這些錯誤就解決了。刪除的.project檔案會自動生成。有的時候clean完會遇到某幾個 java檔案

使用阿里媽媽字型圖示庫ie10無法獲取未定義或 null 引用的屬性“firstChild”

   前因:公司優化頁面,要把彩色圖片,換成字型圖示。   結果:更換完後,測試發現ie10,ie9都會報錯,但demo測試是沒有問題的。   測試:console.log(target)為null,找

tomcat下html網頁檔名為中文訪問錯誤為404

效果如下: 這也就是編碼的問題。 解決此問題: 修改tomcat伺服器的配置檔案: apache-tomcat-6.0.30\conf下server.xml檔案, 找到:  <Connector port="8080" protocol="HTTP/1.1"       

idea無法debug除錯啟動但是run可以正常執行

開發十年,就只剩下這套架構體系了! >>>   

Django:創建用戶模型: (admin.E108) The value of 'list_display[4]'解決方案

png str 行數 div bool 解析 創建 delet sts 參考資料:蟲師-《web接口開發與自動化測試:基於python語言》 日常學習Django框架中,創建了用戶模型,但是頁面功能驗證時候,提示不能進行列表字段操作,debug好久,才找到問題原因,心累。。

伺服器記憶體線性增長根據控制查詢問題程序 伺服器記憶體佔用不斷的增加 & 工作管理員(PF使用率)不斷的增加:關注控制(轉)

伺服器修改成nignx+xxfm之後 訪問速度變快了很多。但是伺服器記憶體每天線性增長30M左右。 網上找了很多資料都不行。根據這篇文章伺服器記憶體佔用不斷的增加 & 工作管理員(PF使用率)不斷的增加:關注控制代碼數(轉) 檢視所有程序的控制代碼數,發現xxfm.exe程序的控制代碼數有3萬多,

在myeclilpse7.5中啟動tomcat7.0.6java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解決方案

我今天在啟動在myeclipse中啟動tomcat7.0.6時,報錯: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.catalina.startup.Bo

關於eclipse安裝spring外掛An error occurred while collecting items to be installed...解決方案

關於eclipse安裝spring外掛報錯An error occurred while collecting items to be installed...解決方案   本文以eclipse4.7安裝sts3.9.0為例,解決報錯  

檔案描述符檔案控制的區別

檔案控制代碼:是windows下概念,在linux/unix下沒有控制代碼這一說法, 在linux/unix下都是"檔案描述符",是整形的 如果使用了標準C庫的函式獲得檔案描述符,那麼就不要使用win32的檔案操作函式,因為win32的檔案操作函式需要win32控制代碼,

安卓虛擬機器啟動後: 類似 SDK Manager] Error: Error parsing .....devices.xml 解決方案

昨天用android sdk manager 更新了android sdk, 我是在myeclipse上面安裝adt來開發android的現在每次開啟myeclipse都報錯, 而且我每次開啟虛擬機器的時候也報錯。報錯的資訊都是一樣的。         報錯的資訊

windows 下在一個程序中使用createprocess建立一個視窗程序並獲取這個視窗的HWND控制

// Process.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h>  #include <ios

Linux 檔案控制的這些技術內幕只有 1% 的人知道

1. 緣起 某個月朗風清的晚上,正在公司對面的深大操場跑步,突然接到同事發來的訊息,他發現某機器上的檔案控制代碼使用量有十一萬多個(下面輸出中的第一個欄位) 但是通過運維常用的lsof命令算了下,相差甚遠。 似乎很不科學,這裡看到的資料不到1萬個,剩下1