国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

多處理器平臺(tái)上J2EE應(yīng)用的內(nèi)存爭用

2019-11-18 15:38:18
字體:
供稿:網(wǎng)友

  隨著在企業(yè)級(jí)環(huán)境對(duì)高可擴(kuò)展性J2EE應(yīng)用的需求,需要在多處理器平臺(tái)上執(zhí)行線程的并行處理。在JVM堆中對(duì)線程處理所需要的內(nèi)存和并發(fā)處理已經(jīng)成為這些J2EE應(yīng)用在部署時(shí)的性能和可擴(kuò)展性的瓶頸。這篇文章探討了J2EE應(yīng)用在多處理器平臺(tái)上訪問JVM堆中的內(nèi)存的線程同步問題。
  
  J2EE應(yīng)用的內(nèi)存需求
  
  當(dāng)前布署在企業(yè)級(jí)環(huán)境中的J2EE應(yīng)用都需要在一秒中能夠處理成千上萬的用戶請(qǐng)求。這種來自大量并發(fā)用戶的數(shù)據(jù)請(qǐng)求就產(chǎn)生了更大堆空間的需求,也就需要更多的內(nèi)存。有了更多的內(nèi)存就可以提供更大的J2EE應(yīng)用堆空間,而多處理器可以處理更多的并發(fā)線程,因而現(xiàn)在線程訪問內(nèi)存的方式和訪問所花費(fèi)的時(shí)間就成了瓶頸所在。
  
  多處理器平臺(tái)
  
  處理器數(shù)目的增加可以提高可擴(kuò)展性,但同時(shí)需要處理更多的線程。線程在處理數(shù)據(jù)、創(chuàng)建java對(duì)象及其他Java操作時(shí)都有需要耗用內(nèi)存。由于多個(gè)線程在多個(gè)處理器中運(yùn)行,就需要保證在系統(tǒng)中數(shù)據(jù)的一致性和完整性。在處理器中的線程同時(shí)讀寫內(nèi)存,這就需要同步這些線程來防止讀寫錯(cuò)誤的數(shù)據(jù)。在圖1中,顯示單處理器與多處理器在訪問內(nèi)存時(shí)的異同。在單處理器平臺(tái)中,在任何給定的時(shí)間只有一個(gè)線程被執(zhí)行,因此不需要同步。然而在多處理器平臺(tái),同一時(shí)間可能會(huì)有多個(gè)線程被執(zhí)行,這就需要同步訪問內(nèi)存來保證數(shù)據(jù)的正確性,而這就會(huì)導(dǎo)致爭用和瓶頸?
  
 多處理器平臺(tái)上J2EE應(yīng)用的內(nèi)存爭用
  Figure 1. Single-PRocessor versus multi-processor platforms accessing memory

  “線程本地堆”嘗試通過為每一個(gè)線程在JVM堆中預(yù)分配一小塊內(nèi)存來解決這個(gè)問題。然而這種方式下內(nèi)存空間對(duì)高內(nèi)存需求的J2EE應(yīng)用來說是不夠的。
  
  實(shí)驗(yàn)和觀察
  
  我們會(huì)在一個(gè)8CPU平臺(tái)上為J2EE應(yīng)用做一項(xiàng)實(shí)驗(yàn),下面是實(shí)驗(yàn)的代碼:
  
  String mem = request.getParameter("memory");
  if (mem != null && !mem.equals("")) {
   int mem_kbytes = Integer.parseInt(mem);
   byte[] i = new byte[mem_kbytes*1024];
  }
  在每一次測試中,這些J2EE線程會(huì)請(qǐng)求創(chuàng)建一個(gè)特定內(nèi)存大小的對(duì)象。在一個(gè)多用戶負(fù)載測試中,我們觀察到下列的數(shù)據(jù):響應(yīng)時(shí)間、吞吐量和資源利用率。
  
  我們將JVM堆大小設(shè)置為一個(gè)較大的值這樣就可以減少垃圾回收的次數(shù)。我們注重到即使負(fù)載增加,“垃圾回收暫停時(shí)間”與“運(yùn)行總時(shí)間”的比率始終在1:35左右,因此我們認(rèn)為他在這項(xiàng)實(shí)驗(yàn)中的影響較小。結(jié)果如下圖2。

多處理器平臺(tái)上J2EE應(yīng)用的內(nèi)存爭用
 
  Figure 2. Results of shared memory access on multi-processor platform

  這個(gè)實(shí)驗(yàn)的環(huán)境如下:

  1、應(yīng)用服務(wù)器:WebLogic7

  2、JVM:Sun JVM 1.3

  3、操作系統(tǒng):windows 2000高級(jí)服務(wù)器版

  4、硬件:Intel Dell PowerEdge 8450 (8Intel Xeon 800MHz 處理器, 4GB RAM)

  5、網(wǎng)絡(luò):100Mbps Cisco網(wǎng)絡(luò)

  6、負(fù)載測試工具:WebLoad
  
  我們觀察到在增加特定內(nèi)存大小的對(duì)象的負(fù)載時(shí),吞吐量增加的比率與CPU利率的增加比較并不相同。當(dāng)然,響應(yīng)時(shí)間的增加也不是線性的。這些實(shí)驗(yàn)清楚地顯示了這些J2EE線程的高內(nèi)存需求導(dǎo)致系統(tǒng)內(nèi)的爭用并且成為J2EE可擴(kuò)展性的瓶頸。我們還觀察到這些線程訪問內(nèi)存和創(chuàng)建對(duì)象所花費(fèi)的時(shí)間隨著處理利用率的增加而增加。這可以從負(fù)載的增加導(dǎo)致服務(wù)請(qǐng)求的增加中看出來,如圖3中特定內(nèi)存大小的Java對(duì)象的創(chuàng)建圖表。

 
多處理器平臺(tái)上J2EE應(yīng)用的內(nèi)存爭用
  Figure 3. Increase in service demand versus load for Java objects of different memory sizes



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 武平县| 开封市| 光泽县| 红河县| 南昌县| 宁南县| 长治市| 瑞安市| 平顶山市| 醴陵市| 石首市| 红河县| 新宁县| 石柱| 班戈县| 常宁市| 克拉玛依市| 江都市| 赞皇县| 新乡市| 广宗县| 屏南县| 莱阳市| 信宜市| 宣武区| 南溪县| 萍乡市| 屯昌县| 湟源县| 方正县| 北流市| 武邑县| 博白县| 色达县| 元阳县| 桐城市| 安多县| 双桥区| 信阳市| 阿巴嘎旗| 邯郸县|