Linux 調(diào)優(yōu)方案,如何修改至大連接數(shù) Ulimit命令 系統(tǒng)限制至大進(jìn)程數(shù) Max User Processes
Linux對(duì)于每個(gè)用戶,系統(tǒng)限制其至大進(jìn)程數(shù)max user processes。為提高性能,可以根據(jù)設(shè)備資源情況,設(shè)置各linux 用戶的至大進(jìn)程數(shù)
可以用ulimit -a 來(lái)顯示當(dāng)前的各種用戶進(jìn)程限制。
下面我把某linux用戶的至大進(jìn)程數(shù)設(shè)為10000個(gè):
ulimit -u 10240
對(duì)于需要做許多 socket 連接并使它們處于打開狀態(tài)的 Java 應(yīng)用程序而言,
至好通過(guò)使用 ulimit -n xx 修改每個(gè)進(jìn)程可打開的文件數(shù),缺省值是 1024。
ulimit -n 4096 將每個(gè)進(jìn)程可以打開的文件數(shù)目加大到4096,缺省為1024
其他建議設(shè)置成無(wú)限制(unlimited)的一些重要設(shè)置是:
數(shù)據(jù)段長(zhǎng)度:ulimit -d unlimited
至大內(nèi)存大小:ulimit -m unlimited
堆棧大小:ulimit -s unlimited
CPU 時(shí)間:ulimit -t unlimited
虛擬內(nèi)存:ulimit -v unlimited
暫時(shí)地,適用于通過(guò) ulimit 命令登錄 shell 會(huì)話期間。
永久地,通過(guò)將一個(gè)相應(yīng)的 ulimit 語(yǔ)句添加到由登錄 shell 讀取的文件中, 即特定于 shell 的用戶資源文件,如:
1)、解除 Linux 系統(tǒng)的至大進(jìn)程數(shù)和至大文件打開數(shù)限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
說(shuō)明:* 代表針對(duì)所有用戶,noproc 是代表至大進(jìn)程數(shù),nofile 是代表至大文件打開數(shù)
2)、讓 SSH 接受 Login 程式的登入,方便在 ssh 客戶端查看 ulimit -a 資源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改為 yes,并把 # 注釋去掉
b、重啟 sshd 服務(wù):
/etc/init.d/sshd restart
3)、修改所有 linux 用戶的環(huán)境變量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
保存后運(yùn)行#source /etc/profile 使其生效
/**************************************
有時(shí)候在程序里面需要打開多個(gè)文件,進(jìn)行分析,系統(tǒng)一般默認(rèn)數(shù)量是1024,(用ulimit -a可以看到)對(duì)于正常使用是夠了,但是對(duì)于程序來(lái)講,就太少了。
修改2個(gè)文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
/**********
另外確保/etc/pam.d/system-auth文件有下面內(nèi)容
session required /lib/security/$ISA/pam_limits.so
這一行確保系統(tǒng)會(huì)執(zhí)行這個(gè)限制。
/***********
3.一般用戶的.bash_profile
#ulimit -n 1024
重新登陸ok
ulimit 的作用
=======================
ulimit:顯示(或設(shè)置)用戶可以使用的資源的限制(limit),這限制分為軟限制(當(dāng)前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應(yīng)用程序在運(yùn)行過(guò)程中使用的系統(tǒng)資源不超過(guò)相應(yīng)的軟限制,任何的超越都導(dǎo)致進(jìn)程的終止。
參數(shù) 描述
ulimited 不限制用戶可以使用的資源,但本設(shè)置對(duì)可打開的至大文件數(shù)(max open files)
和可同時(shí)運(yùn)行的至大進(jìn)程數(shù)(max user processes)無(wú)效
-a 列出所有當(dāng)前資源極限
-c 設(shè)置core文件的至大值.單位:blocks
-d 設(shè)置一個(gè)進(jìn)程的數(shù)據(jù)段的至大值.單位:kbytes
-f Shell 創(chuàng)建文件的文件大小的至大值,單位:blocks
-h 指定設(shè)置某個(gè)給定資源的硬極限。如果用戶擁有 root 用戶權(quán)限,可以somewords硬極限。任何用戶均可減少硬極限
-l 可以鎖住的物理內(nèi)存的至大值
-m 可以使用的常駐內(nèi)存的至大值,單位:kbytes
-n 每個(gè)進(jìn)程可以同時(shí)打開的至大文件數(shù)
-p 設(shè)置管道的至大值,單位為block,1block=512bytes
-s 指定堆棧的至大值:?jiǎn)挝唬簁bytes
-S 指定為給定的資源設(shè)置軟極限。軟極限可somewords到硬極限的值。如果 -H 和 -S 標(biāo)志均未指定,極限適用于以上二者
-t 指定每個(gè)進(jìn)程所使用的秒數(shù),單位:seconds
-u 可以運(yùn)行的至大并發(fā)進(jìn)程數(shù)
-v Shell可使用的至大的虛擬內(nèi)存,單位:kbytes
-x
范例1:
[root@localhost proc]# ulimit -a
core file size (blocks, -c) 100
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 2047
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
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 2047
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost proc]#
輸出的每一行由資源名字、(單位,ulimit命令的參數(shù))、軟限制組成。詳細(xì)解釋:
參數(shù) 描述
core file size core文件的至大值為100 blocks,
data seg size 進(jìn)程的數(shù)據(jù)段可以任意大
file size 文件可以任意大
pending signals 至多有2047個(gè)待處理的信號(hào)
max locked memory 一個(gè)任務(wù)鎖住的物理內(nèi)存的至大值為32kB
max memory size 一個(gè)任務(wù)的常駐物理內(nèi)存的至大值
open files 一個(gè)任務(wù)至多可以同時(shí)打開1024的文件
pipe size 管道的至大空間為4096字節(jié)
POSIX message queues POSIX的消息隊(duì)列的至大值為819200字節(jié)
stack size 進(jìn)程的棧的至大值為8192字節(jié)
cpu time 進(jìn)程使用的CPU時(shí)間
max user processes 當(dāng)前用戶同時(shí)打開的進(jìn)程(包括線程)的至大個(gè)數(shù)為2047
virtual memory 沒有限制進(jìn)程的至大地址空間
file locks 所能鎖住的文件的至大個(gè)數(shù)沒有限制
范例2:通過(guò)ulimit命令來(lái)限制文件的大小,從而導(dǎo)致拷貝命令的失敗
[root@localhost]ls temp.txt
ls: temp.txt: 沒有那個(gè)文件或目錄
[root@localhost]ulimit -f 1 #設(shè)置創(chuàng)建文件的至大塊(一塊=512字節(jié))
[root@localhost]cat a.c > temp.txt
文件大小超出限制
文件a.c的大小是5002字節(jié),而我們?cè)O(shè)定的創(chuàng)建文件的大小是512字節(jié)x1塊=512字節(jié)