您好,登錄后才能下訂單哦!
Linux的最大文件限制數ulimit
一:說明
Linux對于每個用戶,系統限制其最大進程數。為提高性能,可以根據設備資源情況,設置各linux 用戶的最大進程數可以用ulimit -a 來顯示當前的各種用戶進程限制。
ulimit:顯示(或設置)用戶可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程序在運行過程中使用的系統資源不超過相應的軟限制,任何的超越都導致進程的終止。
[root@hadoop001 ~]# 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) 15088
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15088
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
二:ulimit參數的描述
limited 不限制用戶可以使用的資源,但本設置對可打開的最大文件數(max open files)
和可同時運行的最大進程數(max user processes)無效
-a 列出所有當前資源極限
-c 設置core文件的最大值.單位:blocks
-d 設置一個進程的數據段的最大值.單位:kbytes
-f Shell 創建文件的文件大小的最大值,單位:blocks
-h 指定設置某個給定資源的硬極限。如果用戶擁有 root 用戶權限,可以增大硬極限。任何用戶均可減少硬極限
-l 可以鎖住的物理內存的最大值
-m 可以使用的常駐內存的最大值,單位:kbytes
-n 每個進程可以同時打開的最大文件數
-p 設置管道的最大值,單位為block,1block=512bytes
-s 指定堆棧的最大值:單位:kbytes
-S 指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標志均未指定,極限適用于以上二者
-t 指定每個進程所使用的秒數,單位:seconds
-u 可以運行的最大并發進程數
-v Shell可使用的最大的虛擬內存,單位:kbytes
輸出的每一行由資源名字、(單位,ulimit命令的參數)、軟限制組成。詳細解釋:
參數 描述
core file size core文件的最大值為100 blocks,
data seg size 進程的數據段可以任意大
file size 文件可以任意大
pending signals 最多有2047個待處理的信號
max locked memory 一個任務鎖住的物理內存的最大值為32kB
max memory size 一個任務的常駐物理內存的最大值
open files 一個任務最多可以同時打開1024的文件
pipe size 管道的最大空間為4096字節
POSIX message queues POSIX的消息隊列的最大值為819200字節
stack size 進程的棧的最大值為8192字節
cpu time 進程使用的CPU時間
max user processes 當前用戶同時打開的進程(包括線程)的最大個數為2047
virtual memory 沒有限制進程的最大地址空間
file locks 所能鎖住的文件的最大個數沒有限制
三:操作
下面我把某linux用戶的最大進程數設為10000個:
ulimit -u 10240
對于需要做許多 socket 連接并使它們處于打開狀態的 Java 應用程序而言,
最好通過使用 ulimit -n xx 修改每個進程可打開的文件數,缺省值是 1024。
ulimit -n 4096 將每個進程可以打開的文件數目加大到4096,缺省為1024
其他建議設置成無限制(unlimited)的一些重要設置是:
數據段長度:ulimit -d unlimited
最大內存大小:ulimit -m unlimited
堆棧大小:ulimit -s unlimited
CPU 時間:ulimit -t unlimited
虛擬內存:ulimit -v unlimited
暫時地,適用于通過 ulimit 命令登錄 shell 會話期間。
永久地,通過將一個相應的 ulimit 語句添加到由登錄 shell 讀取的文件中,
即特定于 shell 的用戶資源文件,如:
1)、解除 Linux 系統的最大進程數和最大文件打開數限制:
vi /etc/security/limits.conf
四:注意
將ulimit 值添加到/etc/profile文件中(適用于有root權限登錄的系統)
進行配置的時候,
為了每次系統重新啟動時,都可以獲取更大的ulimit值,將ulimit 加入到/etc/profile 文件底部。
echo ulimit -n 65535 >>/etc/profile
source /etc/profile #加載修改后的profile
在生產中,當你不是root用戶的時候,你再次登錄的時候,你的ulimint的值還是沒有改變
解決辦法:
修改linux的軟硬件限制文件/etc/security/limits.conf.
[root@hadoop001 security]# pwd
/etc/security
[root@hadoop001 security]# ll
total 68
....
-rw-r--r--. 1 root root 2508 Oct 15 2017 limits.conf
....
在文件尾部添加如下代碼:
soft noproc 11000
hard noproc 11000
soft nofile 4100
hard nofile 4100
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。