日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Linux下使用ulimit提高系統(tǒng)性能具體方法

Linux對(duì)于每個(gè)用戶,系統(tǒng)限制其最大進(jìn)程數(shù)。為提高性能,可以根據(jù)設(shè)備資源情況,設(shè)置各linux用戶的最大進(jìn)程數(shù),我們可以用ulimit來(lái)顯示當(dāng)前的各種用戶進(jìn)程限制,ulimit為shell內(nèi)建命令,可用來(lái)控制shell執(zhí)行程序的資源,本篇文章為大家講解一下Linux下使用ulimit提高系統(tǒng)性能具體方法。

創(chuàng)新互聯(lián)是一家專(zhuān)注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),安丘網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:安丘等地區(qū)。安丘做網(wǎng)站價(jià)格咨詢(xún):18980820575

如何使用ulimit

ulimit通過(guò)一些參數(shù)選項(xiàng)來(lái)管理不同種類(lèi)的系統(tǒng)資源。在本節(jié),我們將講解這些參數(shù)的使用。

ulimit命令的格式為:

$ ulimit [options] [limit]
[options]

-H: 設(shè)置硬資源限制,一旦設(shè)置不能增加。如,ulimit -Hs 64;限制硬資源,線程棧大小為64K。

-S: 設(shè)置軟資源限制,設(shè)置后可以增加,但是不能超過(guò)硬資源設(shè)置。如,ulimit -Sn 32;限制軟資源,32個(gè)文件描述符。

-a: 顯示當(dāng)前所有的limit信息。如,ulimit -a;顯示當(dāng)前所有的limit信息。

-c: 最大的core文件的大小, 以blocks為單位。如,ulimit -c unlimited;對(duì)生成的core文件的大小不進(jìn)行限制。

-d: 進(jìn)程最大的數(shù)據(jù)段的大小,以Kbytes為單位。如,ulimit -d unlimited;對(duì)進(jìn)程的數(shù)據(jù)段大小不進(jìn)行限制。

-f: 進(jìn)程可以創(chuàng)建文件的最大值,以 blocks 為單位。如,ulimit -f 2048;限制進(jìn)程可以創(chuàng)建的最大文件大小為2048 blocks。

-l: 最大可加鎖內(nèi)存大小,以Kbytes為單位。如,ulimit -l 32;限制最大可加鎖內(nèi)存大小為32Kbytes。

-m: 最大內(nèi)存大小,以Kbytes為單位。如,ulimit -m unlimited;對(duì)最大內(nèi)存不進(jìn)行限制。

-n: 可以打開(kāi)最大文件描述符的數(shù)量。如,ulimit -n 128;限制最大可以使用128個(gè)文件描述符。

-p: 管道緩沖區(qū)的大小,以Kbytes為單位。如,ulimit -p 512;限制管道緩沖區(qū)的大小為512Kbytes。

-s: 線程棧大小,以Kbytes為單位。如,如,ulimit -s 512;限制線程棧的大小為512Kbytes。

-t: 最大的CPU占用時(shí)間,以秒為單位。 如,ulimit -t unlimited;對(duì)最大的CPU占用時(shí)間不進(jìn)行限制。

-u: 用戶最大可用的進(jìn)程數(shù)。如,ulimit -u 64;限制用戶最多可以使用64個(gè)進(jìn)程。

-v: 進(jìn)程最大可用的虛擬內(nèi)存,如,以Kbytes為單位。如,ulimit -v 200000;限制最大可用的虛擬內(nèi)存為200000Kbytes。

ulimit使用實(shí)例

用戶進(jìn)程的有效范圍

ulimit 作為對(duì)資源使用限制的一種工作,是有其作用范圍的。那么,它限制的對(duì)象是單個(gè)用戶,單個(gè)進(jìn)程,還是整個(gè)系統(tǒng)呢?事實(shí)上,ulimit 限制的是當(dāng)前 shell 進(jìn)程以及其派生的子進(jìn)程。舉例來(lái)說(shuō),如果用戶同時(shí)運(yùn)行了兩個(gè) shell 終端進(jìn)程,只在其中一個(gè)環(huán)境中執(zhí)行了 ulimit -s 100,則該 shell 進(jìn)程里創(chuàng)建文件的大小收到相應(yīng)的限制,而同時(shí)另一個(gè) shell 終端包括其上運(yùn)行的子程序都不會(huì)受其影響。

Shell 1

$ ll -h newfile
-rw-r--r--. 1 root root 223K 4月  23 09:16 newfile
$ ulimit -f 100
$ cat newfile > shell1
File size limit exceeded (core dumped)
$ ll -h shell1
-rw-r--r--. 1 root root 100K 4月 23 09:20 shell1

Shell 2

$ cat newfile > shell2
$ ll -d shell2
-rw-r--r--. 1 root root 227690 4月  23 09:23 shell2
$ ll -h shell2
-rw-r--r--. 1 root root 223K 4月  23 09:23 shell2

那么,是否有針對(duì)某個(gè)具體用戶的資源加以限制的方法呢?答案是有的,臨時(shí)生效(不限制打開(kāi)文件大小限制):

$ ulimit -f unlimited

或通過(guò)修改系統(tǒng)的/etc/security/limits.conf配置文件。該文件不僅能限制指定用戶的資源使用,還能限制指定組的資源使用。該文件的每一行都是對(duì)限定的一個(gè)描述,格式如下:

 

domain 表示用戶或者組的名字,還可以使用 * 作為通配符。Type 可以有兩個(gè)值,soft 和 hard。Item 則表示需要限定的資源,可以有很多候選值,如 stack,cpu,nofile 等等,分別表示最大的堆棧大小,占用的 cpu 時(shí)間,以及打開(kāi)的文件數(shù)。通過(guò)添加對(duì)應(yīng)的一行描述,則可以產(chǎn)生相應(yīng)的限制。例如:

 * hard noflle 100

該行配置語(yǔ)句限定了任意用戶所能創(chuàng)建的最大文件數(shù)是 100?,F(xiàn)在已經(jīng)可以對(duì)進(jìn)程和用戶分別做資源限制了,看似已經(jīng)足夠了,其實(shí)不然。很多應(yīng)用需要對(duì)整個(gè)系統(tǒng)的資源使用做一個(gè)總的限制,這時(shí)候我們需要修改/proc下的配置文件。/proc目錄下包含了很多系統(tǒng)當(dāng)前狀態(tài)的參數(shù),例如/proc/sys/kernel/pid_max,/proc/sys/net/ipv4/ip_local_port_range等等,從文件的名字大致可以猜出所限制的資源種類(lèi)。由于該目錄下涉及的文件眾多,在此不一一介紹。有興趣的讀者可打開(kāi)其中的相關(guān)文件查閱說(shuō)明。

使用ulimit限制shell的內(nèi)存使用

在這一小節(jié)里向讀者展示如何使用-d,-m 和-v 選項(xiàng)來(lái)對(duì)shell所使用的內(nèi)存進(jìn)行限制。首先我們來(lái)看一下不設(shè)置ulimit限制時(shí)調(diào)用ls命令的情況:

$ ll shell1 -l
-rw-r--r--. 1 root root 227690 4月  23 09:16 shell1

大家可以看到此時(shí)的 ls 命令運(yùn)行正常。下面設(shè)置 ulimit:

$ ulimit -d 1000 -m 1000 -v 1000
這里再溫習(xí)一下前面章節(jié)里介紹過(guò)的這三個(gè)選項(xiàng)的含義:

-d:設(shè)置數(shù)據(jù)段的最大值。單位:KB。

-m:設(shè)置可以使用的常駐內(nèi)存的最大值。單位:KB。

-v:設(shè)置虛擬內(nèi)存的最大值。單位:KB。

通過(guò)上面的 ulimit 設(shè)置我們已經(jīng)把當(dāng)前 shell 所能使用的最大內(nèi)存限制在 1000KB 以下。接下來(lái)我們看看這時(shí)運(yùn)行 ls 命令會(huì)得到什么樣的結(jié)果:

$ ll shell1 -l
Segmentation fault (core dumped)

使用ulimit限制程序所能創(chuàng)建的socket數(shù)量

考慮一個(gè)現(xiàn)實(shí)中的實(shí)際需求。對(duì)于一個(gè) C/S 模型中的 server 程序來(lái)說(shuō),它會(huì)為多個(gè) client 程序請(qǐng)求創(chuàng)建多個(gè) socket 端口給與響應(yīng)。如果恰好有大量的 client 同時(shí)向 server 發(fā)出請(qǐng)求,那么此時(shí) server 就會(huì)需要?jiǎng)?chuàng)建大量的 socket連接。但是在 Linux 下一切資源皆文件,普通文件是文件,磁盤(pán)打印機(jī)是文件,socket 當(dāng)然也是文件。在 Linux 下創(chuàng)建一個(gè)新的socket 連接,實(shí)際上就是創(chuàng)建一個(gè)新的文件描述符。而Linux對(duì)單進(jìn)程能打開(kāi)的文件描述符是有限制的,默認(rèn)單進(jìn)程能打開(kāi)的最大文件數(shù)量為1024,。ulimit 并沒(méi)有哪個(gè)選項(xiàng)直接說(shuō)是用來(lái)限制socket的數(shù)量的。但是,我們有-n這個(gè)選項(xiàng),它是用于限制一個(gè)進(jìn)程所能打開(kāi)的文件描述符的最大值。如下所示(查看某個(gè)進(jìn)程當(dāng)前打開(kāi)的文件描述符信息):

$ ll /proc/36766/fd
總用量 0
lr-x------. 1 root root 64 4月  23 09:31 0 -> /dev/null
l-wx------. 1 root root 64 4月  23 09:31 1 -> /mydata/localhost.localdomain.err
lrwx------. 1 root root 64 4月  23 09:31 10 -> /mydata/ib_logfile1
lrwx------. 1 root root 64 4月  23 09:31 11 -> socket:[115703]
lrwx------. 1 root root 64 4月  23 09:31 12 -> /tmp/ibLxLFBt (deleted)
l-wx------. 1 root root 64 4月  23 09:31 13 -> /mydata/mysql-bin.000001
lrwx------. 1 root root 64 4月  23 09:31 14 -> socket:[115704]
lrwx------. 1 root root 64 4月  23 09:31 15 -> /mydata/mysql/host.MYI
.......................

因此,我們可以通過(guò)使用ulimit -n來(lái)限制但進(jìn)程所能打開(kāi)的最大文件描述符數(shù)量,默認(rèn)單進(jìn)程打開(kāi)的文件描述符為1024,就是代表單個(gè)進(jìn)程只能同時(shí)最多只能維持1024甚至更少(因?yàn)橛衅渌募木浔淮蜷_(kāi))。如果開(kāi)啟4個(gè)進(jìn)程維持用戶鏈接,那么整個(gè)應(yīng)用能夠同時(shí)維持的連接數(shù)不會(huì)超過(guò)4*1024個(gè),也就是說(shuō)最多只能支持4×1024個(gè)用戶在線。可以增大這個(gè)設(shè)置以便服務(wù)能夠維持更多的TCP連接,從而達(dá)到限制socket創(chuàng)建的數(shù)量。

如果單個(gè)進(jìn)程打開(kāi)的文件句柄數(shù)量超過(guò)了系統(tǒng)定義的值,就會(huì)提到“too many files open”的錯(cuò)誤提示。如何知道當(dāng)前進(jìn)程打開(kāi)了多少個(gè)文件句柄呢?通過(guò)lsof命令可以幫你查看:

$ lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr| head -n 2
   126 7015
    93 1831

上面說(shuō)明了,7015進(jìn)程打開(kāi)了126個(gè)文件描述符,你可以通過(guò)ps命令看看7015這個(gè)進(jìn)程是什么服務(wù)(這里都是以我的舉例說(shuō)明的,你在實(shí)驗(yàn)時(shí)要根據(jù)自己的進(jìn)程進(jìn)行查看,相信你有這個(gè)意識(shí))。

修改單進(jìn)程所能打開(kāi)的最大文件數(shù)

1)ulimit -n 102400

這只是在當(dāng)前終端有效,退出之后,open files又變?yōu)槟J(rèn)值。

2)將ulimit -n 102400寫(xiě)到/etc/profile中,這樣每次登錄終端時(shí),都會(huì)自動(dòng)執(zhí)行/etc/profile。

3)令修改open files的數(shù)值永久生效,則必須修改配置文件:/etc/security/limits.conf在這個(gè)文件后加上:

* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000

本文題目:Linux下使用ulimit提高系統(tǒng)性能具體方法
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/cdjgcog.html