修改Linux開啟單個檔案的進程數

來源:互聯網
上載者:User

 

linux下修改進程開啟檔案數限&#2使用ulimit -a查看相關訊息。

1,linux 預設的進程開啟檔案上限是1024個,可以通過ulimit -n查看。很多系統上限可以通過修改/etc/security/limits.conf檔案改變,這個檔案有詳細的注釋,對如何修改做了說明。如果希望把所有使用者的進程開啟檔案上限改為65536,可以加入下面兩行

* soft nofile 8192
* hard nofile 8192
還可以只真對某個使用者或某個組做修改,具體方法參見檔案注釋。修改後需要重新啟動系統才會生效

或者
ulimit -HSn 8192

2,在Linux核心2.2.x中可以用如下命令修改:

  # echo '8192' >; /proc/sys/fs/file-max
  # echo '32768' >; /proc/sys/fs/inode-max
  
並將以上命令加到/etc/rc.c/rc.local檔案中,以使系統每次重新啟動時配置以上值。

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

  對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程開啟的檔案控制代碼數量超過了系統定義的值,就會提到“too many files open”的錯誤提示。如何知道當前進程開啟了多少個檔案控制代碼呢?下面一段小指令碼可以幫你查看:lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more    在系統訪問高峰時間以root使用者執行上面的指令碼,可能出現的結果如下:# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more    131 24204 57 24244   57 24231  56 24264  其中第一列是開啟的檔案控制代碼數量,第二列是進程號。得到進程號後,我們可以通過ps命令得到進程的詳細內容。ps -aef|grep 24204mysql  24204 24162 99 16:15 ?    00:24:25 /usr/sbin/mysqld  哦,原來是mysql進程開啟最多檔案控制代碼數量。但是他目前只開啟了131個檔案控制代碼數量,遠遠底於系統預設值1024。  但是如果系統並發特別大,尤其是squid伺服器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root使用者運行以下命令:ulimit -HSn 4096  以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的開啟檔案控制代碼數量。個人覺得最好不要超過4096,畢竟開啟的檔案控制代碼數越多回應時間肯定會越慢。設定控制代碼計數後,系統重啟後,又會恢複預設值。如果想永久儲存下來,可以修改.bash_profile檔案,可以修改 /etc/profile 把上面命令加到最後

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.