ulimit -a詳解

ulimit的功能描述:

    假設一臺機器現在有10人登陸,在系統資源沒有限制的情況下,一個人又打開500個文件,每個文件有10m,那這個時候系統內存的資源就收到嚴重的挑戰


        而實際應用的環境要比這種假設複雜的多,例如在一個嵌入式開發環境中,各方面的資源都是非常緊缺的,對於開啓文件描述符的數量,分配堆棧的大小,CPU 時間,虛擬內存大小,等等,都有非常嚴格的要求。資源的合理限制和分配,不僅僅是保證系統可用性的必要條件,也與系統上軟件運行的性能有着密不可分的聯繫。這時,ulimit 可以起到很大的作用,它是一種簡單並且有效的實現資源限制的方式。


    在大型公司,有時候打的集羣個訪問量,有時候需要跑很多程序,有時候程序會莫名奇怪的掛掉,這個時候就需要看看你的ulimit的設置了


工作中最長用的參數:

ulimit -a    列出所有的參數選項

ulimit -H    設置硬件資源限制

ulimit -S    設置軟件資源限制

ulimit -n    設置應許打開文件數


修改ulimit參數,配置文件是:/etc/security/limits.conf

格式:<domain>      <type>  <item>         <value>

domain:可以是用戶或者用戶組    *代表所有

type:可以有兩個值,soft 和 hard

item:表示要限定的資源   可以有很多候選值,如 stack(最大堆棧大小),cpu(佔用cpu的時間),nofile(最大打開文件數) 等等

例:*     hard    nofile    100                該行配置語句限定了任意用戶所能創建的最大文件數是 100。

默認都是用的是soft

使用 ulimit 限制程序所能創建的 socket 數量

考慮到現實生活中的需求,在c/s模式中,一個服務器可能有多個客戶端進行訪問,如果socket數量過多,這是server就需要創建大量的socket端口,系統中往往是限制一個程序創建socket端口的個數的。那如何實現呢,當然是通過ulimit限制,細心的同學可能發現,並沒有socket的參數選項,但是在linux系統中,一切皆文件,1.我們是通過設置nofile的個數來顯示socket的個數的(ulimit -n),2.設置linux的最大進程數來控制(ulimit -u)


spacer.gifwKioL1XCzcPjXnpjAAG0KZ-3zqc094.jpg

linux的系統默認是1024,但是在實際情況下往往是不夠用的,可以根據自己的需要進行設置,我們單位平時設置的是196605

還有一個參數就是max user processes 最大進程數 ulimit -u   設置成196605



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章