運維繫統,發現報錯,開啟檔案控制代碼數太多解決方案
在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來設定這兩個引數。
- [[email protected] ~]# ulimit -a
- core file size (blocks, -c) 0
- data seg size (kbytes, -d) unlimited
- scheduling priority (-e) 30
- file size (blocks, -f) unlimited
- pending signals (-i) 30605
- max locked memory (kbytes, -l) 40000
- max memory size (kbytes, -m) unlimited
- open files (-n) 1024
- pipe size (512 bytes, -p) 8
- POSIX message queues (bytes, -q) 819200
- real-time priority (-r) 65
- stack size (kbytes, -s) 8192
- cpu time (seconds, -t) unlimited
- max user processes (-u) 30605
- virtual memory (kbytes, -v) unlimited
- file locks (-x) unlimited
修改方法:
在檔案/etc/security/limits.conf中新增:
- * soft nofile 65536
- * hard nofile 65536
- 只需要新增上面兩句。
- 最後系統使用這個
# End of file
* - nofile 102400
* - nproc 102400
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後,pip報錯Fatal 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區別,iterable報錯,SSH,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.6報錯java.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