修改Linux文件句柄限制


 

1.  添加ulimit -HSn 655350   到/etc/profile

2. 配置生效  source /etc/profile

 

 

 

分類: LINUX

2010-09-08 00:06:51

 
在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來設定這兩個參數。方法如下,以root用戶運行以下命令:ulimit -HSn 8092

以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開文件句柄數量。個人覺得最好不要超過4096,畢竟打開的文件句柄數越多響應時間肯定會越慢。設定句柄數量后,系統重啟后,又會恢復默認值。如果想永久保存下來,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后

 

1,臨時生效

# ulimit -SHn 10000

其實ulimit 命令身是分軟限制和硬限制,加-H就是硬限制,加-S就是軟限制。默認顯示的是軟限制,如果運行ulimit 命令修改時沒有加上-H或-S,就是兩個參數一起改變。

軟限制和硬限制的區別?
 

硬限制就是實際的限制,而軟限制是警告限制,它只會給出警告。

2,永久生效

要想ulimits 的數值永久生效,必須修改配置文件/etc/security/limits.conf
在該配置文件中添加
* soft nofile 204800  
* hard nofile 204800

* soft nproc 204800
* hard nproc 204800 

echo "* soft nofile 204800"  >> /etc/security/limits.conf
echo "* hard nofile 204800"  >> /etc/security/limits.conf

echo "* soft nproc 204800"  >> /etc/security/limits.conf
echo "* hard nproc 204800 "  >> /etc/security/limits.conf

 

* 表示所用的用戶

3,修改系統總限制

其實上面的修改都是對一個進程打開的文件句柄數量的限制,我們還需要設置系統的總限制才可以。

假如,我們設置進程打開的文件句柄數是1024 ,但是系統總線制才500,所以所有進程最多能打開文件句柄數量500。從這里我們可以看出只設置進程的打開文件句柄的數量是不行的。所以需要修改系統的總限制才可以。

echo  6553560 > /proc/sys/fs/file-max

上面是臨時生效方法,重啟機器后會失效;

永久生效方法:

修改 /etc/sysctl.conf, 加入

echo   fs.file-max = 6553560  >> /etc/sysctl.conf

重啟生效

---------------------
作者:saga_gallon
來源:CSDN
原文:https://blog.csdn.net/saga_gallon/article/details/80305515
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

修改linux的最大文件句柄數限制
 對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有點捉襟見肘了。如果單個進程打開的文件句柄數量超過了系統定義的值,就會提到“too many files open”的錯誤提示。如何知道當前進程打開了多少個文件句柄呢?下面一段小腳本可以幫你查看:
1
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more
 
修改linux的最大文件句柄數限制的方法:
      1)ulimit -n  65535  
            在當前session有效,用戶退出或者系統重新后恢復默認值
      2)修改profile文件:在profile文件中添加:ulimit -n  65535 
           只對當個用戶有效
      3)修改文件:/etc/security/limits.conf,在文件中添加:(立即生效-當前session中運行ulimit -a命令無法顯示)
 
[ html]  
* soft nofile  32768 #限制單個進程最大文件句柄數(到達此限制時系統報警)  
* hard nofile  65536 #限制單個進程最大文件句柄數(到達此限制時系統報錯)  
      4)修改文件:/etc/sysctl.conf。在文件中添加:
[html]  
fs.file-max= 655350 #限制整個系統最大文件句柄數  
      運行命令:/sbin/sysctl -p 使配置生效

 

 

 

 

 

 

1. #vi /etc/profile,增加ulimit -HSn 65536
















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM