Linux 调优方案, 修改最大连接数(ulimit命令)
Linux對于每個(gè)用戶,系統(tǒng)限制其最大進(jìn)程數(shù)。為提高性能,可以根據(jù)設(shè)備資源情況,設(shè)置各linux 用戶的最大進(jìn)程數(shù)
可以用ulimit -a 來顯示當(dāng)前的各種用戶進(jìn)程限制。
 下面我把某linux用戶的最大進(jìn)程數(shù)設(shè)為10000個(gè):
 ?????ulimit -u 10240
 ?????對于需要做許多?socket 連接并使它們處于打開狀態(tài)的 Java 應(yīng)用程序而言,
 ?????最好通過使用 ulimit -n xx 修改每個(gè)進(jìn)程可打開的文件數(shù),缺省值是 1024。
 ?????ulimit -n 4096 將每個(gè)進(jìn)程可以打開的文件數(shù)目加大到4096,缺省為1024
 ?????其他建議設(shè)置成無限制(unlimited)的一些重要設(shè)置是:
 ?????數(shù)據(jù)段長度:ulimit -d unlimited
 ?????最大內(nèi)存大小:ulimit -m unlimited
 ?????堆棧大小:ulimit -s unlimited
 ?????CPU 時(shí)間:ulimit -t unlimited
 ?????虛擬內(nèi)存:ulimit -v unlimited
   
 ?????暫時(shí)地,適用于通過 ulimit 命令登錄 shell?會(huì)話期間。
 ?????永久地,通過將一個(gè)相應(yīng)的 ulimit 語句添加到由登錄 shell 讀取的文件中, 即特定于 shell?的用戶資源文件,如:
1)、解除 Linux 系統(tǒng)的最大進(jìn)程數(shù)和最大文件打開數(shù)限制:
 ????????vi /etc/security/limits.conf
 ????????# 添加如下的行
 ????????* soft noproc 11000
 ????????* hard noproc 11000
上邊兩行可以用一行代替 ?* - noproc 11000?
-的意思為soft 和hard 全部限制 。
 ????????* soft nofile 4100
 ????????* hard nofile 4100
 ???????說明:* 代表針對所有用戶,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可以看到)對于正常使用是夠了,但是對于程序來講,就太少了。
 修改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)行過程中使用的系統(tǒng)資源不超過相應(yīng)的軟限制,任何的超越都導(dǎo)致進(jìn)程的終止。
 參數(shù) 描述
 ulimited 不限制用戶可以使用的資源,但本設(shè)置對可打開的最大文件數(shù)(max open files)
 和可同時(shí)運(yùn)行的最大進(jìn)程數(shù)(max user processes)無效
 -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)限,可以增大硬極限。任何用戶均可減少硬極限
 -l 可以鎖住的物理內(nèi)存的最大值
 -m 可以使用的常駐內(nèi)存的最大值,單位:kbytes
 -n 每個(gè)進(jìn)程可以同時(shí)打開的最大文件數(shù)
 -p 設(shè)置管道的最大值,單位為block,1block=512bytes
 -s 指定堆棧的最大值:單位:kbytes
 -S 指定為給定的資源設(shè)置軟極限。軟極限可增大到硬極限的值。如果 -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:通過ulimit命令來限制文件的大小,從而導(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é),而我們設(shè)定的創(chuàng)建文件的大小是512字節(jié)x1塊=512字節(jié)?
來源:https://blog.csdn.net/isoleo/article/details/51732687
總結(jié)
以上是生活随笔為你收集整理的Linux 调优方案, 修改最大连接数(ulimit命令)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux中高并发socket最大连接数
- 下一篇: 松茸风味燕窝粥多少钱?
