linux系統limit知識


1. /proc/sys/fs/file-max  設置內核最大的文件句柄數 
2. /proc/sys/fs/nr_open  設置進程最大的文件句柄數,不能超過1
3. /etc/security/limits.conf   “work soft nofile xxxx”設置用戶單個進程的最大的文件句柄數,不能超過2,否則ssh無法登錄(今天的遇到的坑)。修改limit.conf前可以用 ulimit命令驗證一下你將要設置的值是否合法。
4. ulimit -n xxx 該命令只對當前終端有效。

 

1.limit限制每個shell進程和它的子進程對資源的占用。每個登錄,還是每個進程?

比如ulimit -n 10240 可以臨時改變當前session的shell進程的文件句柄數限制,退出當前窗口后,限制恢復。

要每個shell都生效,添加到系統啟動腳本中

也可以在進程啟動腳本前添加ulimit -n 命令 

2.修改 /etc/security/limits,可以設置用戶級別的限制,包括軟限制和硬限制

3. /proc/sys/fs/file-max,可以設置系統級別的限制

 

應用:修改網絡連接數限制

1、修改用戶進程可打開文件數限制
最高的並發數量都要受到系統對用戶單一進程同時可打開文件數量的限制這是因為系統為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)
查看進程打開文件描述符  /proc/1234/fd
 
2.修改tcp參數設置net.ipv4.ip_local_port_range
每個TCP客戶端連接都要占用一個唯一的本地端口號(此端口號在系統的本地端口號范圍限制中),如果現有的TCP客戶端連接已將所有的本地端口號占滿,則此時就無法為新的TCP客戶端連接分配一個本地端口號了,因此系統會在這種情況下在connect()調用中返回失敗,並將錯誤提示消息設為“Can't assignrequested address”
 

 

http://blog.csdn.net/wh0426/article/details/52311683

1./etc/security/limits.conf中指定的nofile的值,nofile有上限,不是無窮大。nofile由內核參數nr_open定義的.

“在2.6.25內核之前有個宏定義,定義了這個值的最大值,為1024*1024,正好是100萬,而在2.6.25內核及其之后,這個值是可以通過/proc/sys/fs/nr_open來設置。”

2.使用cat /proc/sys/fs/nr_open 查看nr_open值,可通過修改/ect/sysct.conf 修改fs.nr_open值,sysctl -p生效

3.fix_max linux內核定義的最大file handles(文件句柄數).nr_open定義是單進程最大file-handles,file-handles(即文件句柄)

4./proc/sys/fs/file-nr 記錄系統中fd的使用情況,已分配文件句柄的數目 

 

file-max:
The value in file-max denotes the maximum number of file-
handles that the Linux kernel will allocate. When you get lots
of error messages about running out of file handles, you might
want to increase this limit
 
 
nr_open:
This denotes the maximum number of file-handles a process can
allocate. Default value is 1024*1024 (1048576) which should be
enough for most machines. Actual limit depends on RLIMIT_NOFILE
resource limit.
 
 

 inode 或i節點是指對文件的索引。如一個系統,所有文件是放在磁盤或flash上,就要編個目錄來說明每個文件在什么地方,有什么屬性,及大小等。就像書本的目錄一樣,便於查找和管理。這目錄是操作系統需要的,用來找文件或叫管理文件。許多操作系統都用到這個概念,如linux, 某些嵌入式文件系統等。當然,對某個系統來說,有許多i節點。所以對i節點本身也是要進行管理的。

 

    在linux中,內核通過inode來找到每個文件,但一個文件可以被許多用戶同時打開或一個用戶同時打開多次。這就有一個問題,如何管理文件的當前位移量,因為可能每個用戶打開文件后進行的操作都不一樣,這樣文件位移量也不同,當然還有其他的一些問題。所以linux又搞了一個文件描述符(file descriptor)這個東西,來分別為每一個用戶服務。每個用戶每次打開一個文件,就產生一個文件描述符,多次打開就產生多個文件描述符,一一對應,不管是同一個用戶,還是多個用戶。該文件描述符就記錄了當前打開的文件的偏移量等數據。所以一個i節點可以有0個或多個文件描述符。多個文件描述符可以對應一個i節點。

 


免責聲明!

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



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