歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux ulimit知識

www.2cto.com:可以結合本文學習:http://www.2cto.com/os/201108/101237.html
㈠、何為ulimit
 
ulimit為shell內建指令,可用來控制shell執行程序的資源
 
㈡、ulimitl默認值是多少
 
[root@mttx ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 8064
max locked memory       (kbytes, -l) 32
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) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 8064
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 
 
㈢、為何要修改ulimit
 
   對於需要做許多socket 連接並使它們處於打開狀態的Java 應用程序而言,
最好通過使用ulimit -n xx 修改每個進程可打開的文件數,缺省值是1024,有時候會遇上Socket/File: Can’t open so many files或too many open files的問題.
 
㈣怎麼修改ulimit
 
1在/etc/rc.local中增加
ulimit -SHn 65535
 
2在/etc/profile中增加
ulimit -SHb 65535
 
然後source /etc/profile讓參數即時生效
 
3在/etc/security/limits.conf 中增加
 
 
 
*     soft   nproc           65535
*     hard   nproc           65535
*     soft   nofile          65535
*     hard   nofile          65535
 
說明:* 代表針對所有用戶,nproc是代表最大進程數,nofile 是代表最大文件打開數.修改了limits.conf文件之後,要讓它立即生效,只需關閉當前session,重新連接即可
 
 
 
㈤、擴展閱讀:
 
在Linux下面部署應用的時候,,其實Linux是有文件句柄限制的,而且默認不是很高,一般都是1024,作為一台生產服務器,其實很容易就達到這個數量,因此我們需 要把這個值改大一些。
 
 
 
  這裡,有很多ulimit的文章都說的很含糊,究竟這個1024 是系統的限制,還是用戶的限制呢。其實,這個是用戶限制來的,完整的說法,應該是當前用戶准備要運行的程序的限制。
 
1、這個限制是針對單個程序的限制
2、這個限制不會改變之前已經運行了 的程序的限制
3、對這個值的修改,退出了當前的shell就會消失
 
   比如說,我先運行了一個程序A,然後 通過ulimit修改了限制為2048,然後運行B,然後退出了shell再登錄,然後運行C。那就只有B可以打開2048個句柄。
 
其中一個方法,是想ulimit修改命令放入/etc/profile 裡面,但是這個做法並不好
 
正確的做法,應該是修改/etc /security/limits.conf
 
那系統總限制呢
 
其實是在這裡,/proc/sys /fs/file-max
可以通過cat查看目前的 值,echo來立刻修改
 
另外還有一個,/proc/sys /fs/file-nr
只讀,可以看到整個系統目前使用的文 件句柄數量
 
查找文件句柄問題的時候,還有一個很 實用的程序lsof
可以很方便看到某個進程開了那些句柄
也可以看到某個文件/目錄被什麼進程 占用了
 
如果你使用squid的話,你要在/etc/init.d/squid的文件加入ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384
 
注:上面這種方式只是改變了用戶登陸系統後的文件打開數,對於/etc/init.d/nginxphp這種的啟動腳本並不起作用,像這種啟動腳本,需要在腳本內加一行:
 
ulimit -HSn 65535
 
才行。
 
本文出自 “系統網絡運維” 博客
Copyright © Linux教程網 All Rights Reserved