一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - jvm支持最大線程數簡單測試

jvm支持最大線程數簡單測試

2021-02-24 14:02排骨瘦肉丁 Java教程

這篇文章主要介紹了jvm支持最大線程數簡單測試,具有一定參考價值,需要的朋友可以了解下。

最近想測試下Openfire下的最大并發數,需要開大量線程來模擬客戶端。對于一個JVM實例到底能開多少個線程一直心存疑惑,所以打算實際測試下,簡單google了把,找到影響線程數量的因素有下面幾個:

 

-Xms

intial java heap size

-Xmx

maximum java heap size

-Xss

the stack size for each thread

系統限制

系統最大可開線程數

 

測試程序如下: Java代碼 :

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.concurrent.atomic.AtomicInteger; 
  
public class TestThread extends Thread { 
  private static final AtomicInteger count = new AtomicInteger(); 
  
  public static void main(String[] args) { 
    while (true
      (new TestThread()).start(); 
  
  
  
  @Override
  public void run() { 
    System.out.println(count.incrementAndGet()); 
  
    while (true
      try
        Thread.sleep(Integer.MAX_VALUE); 
      } catch (InterruptedException e) { 
        break
      
  
}

測試環境: 系統:Ubuntu 10.04 Linux Kernel 2.6 (32位)
內存:2G
JDK:1.7

測試結果:
Ø 不考慮系統限制

-Xms

-Xmx

-Xss

結果

1024m

1024m

1024k

1737

1024m

1024m

64k

26077

512m

512m

64k

31842

256m

256m

64k

31842

在創建的線程數量達到31842個時,系統中無法創建任何線程。

由上面的測試結果可以看出增大堆內存(-Xms,-Xmx)會減少可創建的線程數量,增大線程棧內存(-Xss,32位系統中此參數值最小為60K)也會減少可創建的線程數量

Ø 結合系統限制

線程數量31842的限制是是由系統可以生成的最大線程數量決定的:/proc/sys/kernel/threads-max,可其默認值是32080。修改其值為10000:echo 10000 > /proc/sys/kernel/threads-max,修改后的測試結果如下:

 

-Xms

-Xmx

-Xss

結果

256m

256m

64k

9761

 

這樣的話,是不是意味著可以配置盡量多的線程?再做修改:echo 1000000 > /proc/sys/kernel/threads-max,修改后的測試結果如下:

 

-Xms

-Xmx

-Xss

結果

256m

256m

64k

32279

128m

128m

64k

32279

 

發現線程數量在達到32279以后,不再增長。查了一下,32位Linux系統可創建的最大pid數是32678,這個數值可以通過/proc/sys/kernel/pid_max來做修改(修改方法同threads-max),但是在32系統下這個值只能改小,無法更大。在threads-max一定的情況下,修改pid_max對應的測試結果如下:

pid_max

-Xms

-Xmx

-Xss

結果

1000

128m

128m

64k

582

10000

128m

128m

64k

9507

在Windows上的情況應該類似,不過相比Linux,Windows上可創建的線程數量可能更少。基于線程模型的服務器總要受限于這個線程數量的限制。

JVM中可以生成的最大數量由JVM的堆內存大小、Thread的Stack內存大小、系統最大可創建的線程數量(Java線程的實現是基于底層系統的線程機制來實現的,Windows下_beginthreadex,Linux下pthread_create)三個方面影響。具體數量可以根據Java進程可以訪問的最大內存(32位系統上一般2G)、堆內存、Thread的Stack內存來估算。

序:

在64位Linux系統(CentOS6,3G內存)下測試,發現還有一個參數是會限制線程數量:maxuserprocess(可通過ulimit–a查看,默認值1024,通過ulimit–u可以修改此值),這個值在上面的32位Ubuntu測試環境下并無限制。

將threads-max,pid_max,maxuserprocess,這三個參數值都修改成100000,-Xms,-Xmx盡量小(128m,64m),-Xss盡量小(64位下最小104k,可取值128k)。事先預測在這樣的測試環境下,線程數量就只會受限于測試環境的內存大小(3G),可是實際的測試結果是線程數量在達到32K(32768,創建的數量最多的時候大概是33000左右)左右時JVM是拋出警告:Attempttoallocatestackguardpagesfailed,然后出現OutOfMemoryError無法創建本地線程。查看內存后發現還有很多空閑,所以應該不是內存容量的原因。Google此警告無果,暫時不知什么原因,有待進一步研究。

序2:

今天無意中發現文章[7],馬上試了下,果然這個因素會影響線程創建數量,按文中描述把/proc/sys/vm/max_map_count的數量翻倍,從65536變為131072,創建的線程總數量達到65000+,電腦基本要卡死(3G內存)…簡單查了下這個參數的作用,在[8]中的描述如下:

“Thisfilecontainsthemaximumnumberofmemorymapareasaprocessmayhave.Memorymapareasareusedasaside-effectofcallingmalloc,directlybymmapandmprotect,andalsowhenloadingsharedlibraries.

Whilemostapplicationsneedlessthanathousandmaps,certainprograms,particularlymallocdebuggers,mayconsumelotsofthem,e.g.,uptooneortwomapsperallocation.

Thedefaultvalueis65536.”

OK,這個問題總算完滿解決,最后總結下影響Java線程數量的因素:

Java虛擬機本身:-Xms,-Xmx,-Xss;

系統限制:

/proc/sys/kernel/pid_max,

/proc/sys/kernel/thread-max,

max_user_process(ulimit-u),

/proc/sys/vm/max_map_count。

總結

以上就是本文關于jvm支持最大線程數簡單測試的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。

原文鏈接:http://blog.csdn.net/iamlihongwei/article/details/53131095

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产欧美精品专区一区二区 | 果冻传媒ⅹxxxxxhd | ckinese中国男同gay男男 | 国士李风起全文在线阅读 | 午夜影视免费 | 蹭蹭妈妈的朋友小说 | 摸咪网在线影院在线观看 | 高清在线一区二区 | 小柔的性放荡羞辱日记动漫 | 亚洲 欧美 国产 在线 日韩 | 国产一区在线 | 国产成人亚洲综合91精品555 | 久久婷婷五月综合色丁香花 | 波多野结衣在线观看中文字幕 | 精品亚洲综合在线第一区 | 欧美日韩中文国产一区 | 免费看a视频 | 亚洲国产成人久久77 | 久久免费黄色 | 先锋资源av | 青青青久久久 | 国产精品视频人人做人人爱 | 日本高免费观看在线播放 | 538亚洲欧美国产日韩在线精品 | 日韩精品免费一级视频 | 911精品国产亚洲日本美国韩国 | 日本动漫打扑克动画片樱花动漫 | 久久精品亚洲热综合一本 | 精品一二三区久久AAA片 | 亚洲精品老司机福利在线播放 | 免费高清在线视频色yeye | 国产91一区二区在线播放不卡 | 国产实拍会所女技师在线 | 亚洲国产成人久久午夜 | 国产品精人成福利视频 | 99精品国产综合久久久久 | 美女脱了内裤让男生玩屁股 | 日本免费一区二区三区 | 日本无遮挡拍拍拍凤凰 | 冰雪奇缘1完整版免费观看 变形金刚第一部 | 女人特黄大aaaaaa大片 |