天天看點

Linux最大線程數限制及目前線程數查詢

常用配置

檢視linux系統級的最大打開檔案數限制,使用如下指令:

指令參數

描述

例子

-H

設定硬資源限制,一旦設定不能增加。

ulimit – Hs 64;限制硬資源,線程棧大小為 64K。

-S

設定軟資源限制,設定後可以增加,但是不能超過硬資源設定。

ulimit – Sn 32;限制軟資源,32 個檔案描述符。

-a

顯示目前所有的 limit 資訊

ulimit – a;顯示目前所有的 limit 資訊

-c

最大的 core 檔案的大小, 以 blocks 為機關

ulimit – c unlimited; 對生成的 core 檔案的大小不進行限制

-d

程序最大的資料段的大小,以 Kbytes 為機關

ulimit -d unlimited;對程序的資料段大小不進行限制

-f

程序可以建立檔案的最大值,以 blocks 為機關

ulimit – f 2048;限制程序可以建立的最大檔案大小為 2048 blocks

-l

最大可加鎖記憶體大小,以 Kbytes 為機關

ulimit – l 32;限制最大可加鎖記憶體大小為 32 Kbytes

-m

最大記憶體大小,以 Kbytes 為機關

ulimit – m unlimited;對最大記憶體不進行限制

-n

可以打開最大檔案描述符的數量

ulimit – n 128;限制最大可以使用 128 個檔案描述符

-p

管道緩沖區的大小,以 Kbytes 為機關

ulimit – p 512;限制管道緩沖區的大小為 512 Kbytes

-s

線程棧大小,以 Kbytes 為機關

ulimit – s 512;限制線程棧的大小為 512 Kbytes

-t

最大的 CPU 占用時間,以秒為機關

ulimit – t unlimited;對最大的 CPU 占用時間不進行限制

-u

使用者最大可用的程序數

ulimit – u 64;限制使用者最多可以使用 64 個程序

-v

程序最大可用的虛拟記憶體,以 Kbytes 為機關

ulimit – v 200000;限制最大可用的虛拟記憶體為 200000 Kbytes

我們可以使用ulimit -a檢視我們系統的所有限制

 檢視linux系統級的最大打開檔案數限制,使用如下指令

1、總結系統限制有:

    /proc/sys/kernel/pid_max #查系統支援的最大線程數,一般會很大,相當于理論值

    /proc/sys/kernel/thread-max

    max_user_process(ulimit -u) #系統限制某使用者下最多可以運作多少程序或線程

    /proc/sys/vm/max_map_count

    硬體記憶體大小

2、Java虛拟機本身限制:

    -Xms  #intial java heap size

    -Xmx  #maximum java heap size

    -Xss  #the stack size for each thread

3、查詢目前某程式的線程或程序數

pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l

pstree -p <pid> | wc -l

4、查詢目前整個系統已用的線程或程序數

pstree -p | wc -l

5、檢視所有存在的線程

ps xH

6、檢視一個程序起的線程數

ps -mp <pid>