亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

解決JAVA服務器性能問題研究分析

2019-11-18 12:43:38
字體:
來源:轉載
供稿:網友

     摘要

    
改善java服務器的性能需要模擬負載下的服務器。創建一個模擬環境、搜集數據并且分析結果可能是對許多開發人員的挑戰。這篇文章中的示例介紹了JAVA服務器性能分析的概念和工具。作者使用這個示例來研究超額請求次數下內存使用和同步竟爭的影響。
作者Ivan Small

     項目團隊已經很熟悉如何組織一些具體的任務并完成他們。簡單的性能問題很輕易由一個開發人員分離并解決。然而大的性能問題,通常在系統處于高負載情況下發生,就不是這么簡單能處理的了。這些問題需要一個獨立的測試環境、一個模擬的負載,并且需要仔細地分析和跟蹤。

     在這篇文章中,我使用比較通用的工具和設備創建了一個測試環境。我會專注于兩個性能問題,內存和同步,他們很難用簡單的分析得到。通過一個具體的例子,我希望比較輕易地解決復雜的性能問題而且可以提供處理問題過程中的細節。

     改善服務器的性能

     服務器的性能改善是依靠于數據的。沒有可靠的數據基礎而更改應用或環境會導致更差的結果。分析器提供有用的JAVA服務器應用信息,但由于從單用戶負載下的數據與多用戶負載下得到的數據是完全不同的,這導致分析器的數據并不精確。在開發階段使用分析器來優化應用的性能是一個好的方式,但在高負載下的應用分析可以取到更好的效果。


     在負載下分析服務器應用的性能需要一些基本的元素:
        1、可控的進行應用負載測試的環境。
        2、可控的人造負載使得應用滿負荷運行。
        3、來自監視器、應用和負載測試工具自身的數據搜集。
        4、性能改變的跟蹤。

     不要低估最后一個需求(性能跟蹤)的重要性因為假如不能跟蹤性能你就不能實際的治理項目。性能上10-20%的改善對單用戶環境來說并沒有什么不同,但對支持人員來說就不一樣了。20%的改善是非常大的,而且通過跟蹤性能的改善,你可以提供重要的反饋和持續跟蹤。
     雖然性能跟蹤很重要,但有時為了使后續的測試更加精確而不得不拋棄先前的測試結果。在性能測試中,改善負載測試的精確性可能需要修改模擬環境,而這些變化是必須的,通過變化前后的負載測試你可以觀察到其中的轉變。

     可控的環境        
     可控的環境最少也需要兩臺獨立的機器和第三臺控制的機器。其中一臺用來生成負載,另一臺作為控制機與前一臺建立測試應用并接受反饋,第三臺機器運行應用。此外,負載和應用機器間的網絡應該與局域網分開。控制機接受運行應用機器的反饋如操作系統、硬件使用率、應用(非凡是VM)的狀態。

     負載模擬
最精確的模擬通常用實際的用戶數據和WEB服務器端的訪問日志。假如你還沒有實際布署或者缺少實際的用戶數據,你可以通過構造類似的場景或詢問銷售和產品治理團隊或做一些有依據的猜想。協調負載測試和實際用戶體驗是一個持續的過程。

     在模擬中一些用戶場景是必須的。如在一個通用地址薄應用中,你應該區分更新和查詢操作。在我的測試應用中GrinderServlet類只有一個場景。單用戶連接10次訪問這個servlet(在每一次訪問間有一段暫停)。雖然這個應用很小,我認為這可以重復一些常見的東西。用戶通常不會連接給服務器請求而沒有間斷。假如沒有間斷,我們可能不能得到更精確的實際用戶上限。

     串行10個請求的另一個原因是實際應用中不會只有一個HTTP請求。單一而又分離的請求可以影響環境中的許多因素。對Tomcat來說,會為每一個請求創建一個會話,并且HTTP協議答應不同的請求重用連接。我會修改一下負載測試來避免混洧。

     GrinderServlet類不會執行任何排序操作,但這個需求在大部分應用中都很普通。在這些應用中,你需要創建模擬的數據集并且用他們來構造相關用例的負載測試。

     例如,假如用例涉及到用戶登錄一個WEB應用,從可能的用戶列表中選取隨機的用戶會只使用一個用戶更精確。否則,你可能不經意地使用了系統緩存或其他的優化或一些微妙的東西,而這會使得結果不正確。

     負載測試軟件
     負載測試軟件可以構造測試場景并且對服務進行負載測試。我會在下面的示例中使用OpenSTA測試軟件。這軟件簡單易學,結果也很輕易導出,并且支持參數化腳本,還可以監視信息的變化,他的主要缺點是基于Windows,但在這兒不是個問題。當然還有很多可選項如Apache的JMeter和Mercury的LoadRunner。

     The GrinderServlet

     列表1中顯示了GrinderServlet類,列表2中顯示了Grinder類
Listing 1

package pub.capart;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GrindServlet extends HttpServlet {
   PRotected void doGet(HttpServletRequest req, HttpServletResponse res)
         throws ServletException, IOException {
      Grinderv1 grinder = Grinderv1.getGrinder();
      long t1 = System.currentTimeMillis();
      grinder.grindCPU(13);
      long t2 = System.currentTimeMillis();

      PrintWriter pw = res.getWriter();
      pw.print("<Html>/n< body> /n");
      pw.print("Grind Time = "+(t2-t1));
      pw.print("< body> /n< /html> /n");
   }
}


Listing 2

package pub.capart;

/**
* This is a simple class designed to simulate an application consuming
* CPU, memory, and contending for a synchronization lock.
*/
public class Grinderv1 {
   private static Grinderv1 singleton = new Grinderv1();
   private static final String randstr =
      "this is just a random string that I'm going to add up many many times";

   public static Grinderv1 getGrinder() {
      return singleton;
   }
   public synchronized void grindCPU(int level) {
      StringBuffer sb = new StringBuffer();
      String s = randstr;
      for (int i=0;i<level;++i) {
         sb.append(s);
         s = getReverse(sb.toString());
      }
   }
   public String getReverse(String s) {
      StringBuffer sb = new StringBuffer(s);
      sb = sb.reverse();
      return sb.toString();
   }
}


     類很簡單,但他們會產生兩個很常見的問題。咋一看瓶頸可能由grindCPU()方法的同步修飾符引起,但實際上內存消耗才是真正的問題所在。如圖1,我的第一個負載測試顯示了常見的負載變化。在這里負載變化很重要因為你正在模擬一個高的負載。這種熱身的方式也更精確因為避免了jsp編譯引起的問題。我通常習慣于在進行負載測試前先進行單用戶模擬。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成av人片在线观看香蕉| 国产精品视频网址| 日韩精品免费电影| 96sao精品视频在线观看| 成人午夜黄色影院| 久久久久国产精品一区| 欧美极品少妇xxxxⅹ喷水| 国产成人亚洲精品| 日韩精品999| 国产精品视频精品| 91久久嫩草影院一区二区| 亚洲日本成人女熟在线观看| 国产高清在线不卡| 性欧美xxxx| 国产精品国产三级国产专播精品人| 日韩中文理论片| 久久综合久久88| 久久精品国产欧美激情| 疯狂欧美牲乱大交777| 日韩高清电影好看的电视剧电影| 日韩欧美精品网站| 欧美另类老女人| 欧美在线亚洲一区| www欧美xxxx| 尤物tv国产一区| 91精品国产成人www| 亚洲福利影片在线| 精品久久久久久久久久久久久久| 91欧美日韩一区| 91国产精品91| 欧美日韩在线视频首页| 欧美极品少妇与黑人| 国产精品美女免费视频| 91高清免费在线观看| 亚洲精品自在久久| 亚洲有声小说3d| 亚洲影院污污.| 狠狠躁夜夜躁久久躁别揉| 久久久视频免费观看| 欧美成人免费全部| 最近2019年日本中文免费字幕| 精品久久久香蕉免费精品视频| 日韩欧美在线网址| 91精品国产乱码久久久久久久久| 成人欧美一区二区三区黑人孕妇| 久久精品成人欧美大片古装| 久久久女女女女999久久| 久久天天躁狠狠躁夜夜躁| 中文字幕亚洲欧美日韩在线不卡| 高清一区二区三区日本久| 国产亚洲日本欧美韩国| 国产精品流白浆视频| 欧美一区二区.| 久久久视频免费观看| 久久手机精品视频| 欧美高清视频在线| 国产999在线| 日本成人在线视频网址| 国产精品日韩精品| 久久精品国产欧美亚洲人人爽| 国产精品久久久精品| 午夜精品视频网站| 国产精品自产拍在线观看| 亚洲第一福利在线观看| 国产国产精品人在线视| 亚洲午夜精品视频| 亚洲欧美一区二区三区情侣bbw| 亚洲免费伊人电影在线观看av| 麻豆精品精华液| 亚洲成年网站在线观看| 国产99在线|中文| 91人成网站www| 日韩网站在线观看| 国产精品福利在线观看网址| 欧美日韩国内自拍| 欧洲亚洲免费视频| 欧美高清在线播放| 精品视频www| 最近日韩中文字幕中文| 国产精品老女人精品视频| 国产日韩精品入口| 91国产精品电影| 成人免费激情视频| 国产精品久久久久久av下载红粉| 2019av中文字幕| 91免费综合在线| 亚洲精品久久久久中文字幕欢迎你| 草民午夜欧美限制a级福利片| 欧美精品999| 日韩精品亚洲元码| 欧美日韩亚洲高清| 国产深夜精品福利| 日本精品视频在线| 在线国产精品视频| 久久综合免费视频| 亚洲欧美日韩国产中文| 26uuu另类亚洲欧美日本一| 成人免费高清完整版在线观看| 中日韩午夜理伦电影免费| 国产欧美日韩精品专区| 国产91在线播放| 成人网在线观看| 97国产suv精品一区二区62| 欧美日韩一区二区三区| 亚洲日韩欧美视频| 91av视频在线| 日韩av在线免播放器| 国产精品久久久久久久久久久不卡| 久久久之久亚州精品露出| 97成人在线视频| 日本国产精品视频| 亚洲欧美日韩综合| 亚洲爱爱爱爱爱| 午夜精品久久久久久久男人的天堂| 国产99久久精品一区二区 夜夜躁日日躁| 色妞色视频一区二区三区四区| 亚洲乱码国产乱码精品精天堂| 亚洲欧美成人在线| 欧美巨乳美女视频| 欧美放荡办公室videos4k| 色综合色综合网色综合| 日韩av一区在线| 久久久久久久影视| 亚洲国产另类久久精品| 亚洲偷欧美偷国内偷| 国产综合在线视频| 色99之美女主播在线视频| 中文字幕av日韩| 91精品91久久久久久| 亚洲精品免费一区二区三区| 久久亚洲电影天堂| 日韩中文综合网| 中文字幕在线精品| 亚洲香蕉伊综合在人在线视看| 亚洲欧洲成视频免费观看| 亚洲a级在线播放观看| 亚洲一区二区中文字幕| 日韩极品精品视频免费观看| 亚洲天堂日韩电影| 蜜臀久久99精品久久久久久宅男| 成人黄色av播放免费| 91精品成人久久| 亚洲欧洲xxxx| 国产精品久久久久久久久久新婚| 国产精品视频男人的天堂| 久久久精品欧美| 成人性生交大片免费看小说| 日韩视频在线一区| 亚洲欧美日韩在线一区| 亚洲美女又黄又爽在线观看| 国产精品久久久av| 国产精品第2页| 日韩久久精品电影| 欧美精品久久久久久久免费观看| 日韩精品极品在线观看| 精品国产成人av| 成人福利视频网| 欧美日韩xxx| 亚洲免费伊人电影在线观看av| 91国内揄拍国内精品对白| 久久久亚洲福利精品午夜| 国产激情综合五月久久| 在线免费看av不卡| 国产91精品久久久久|