<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            一種正規的性能調優(yōu)方法:基于等待的調優(yōu)

            發(fā)表于:2013-04-23來(lái)源:InfoQ作者:Steven Haines,點(diǎn)擊數: 標簽:性能調優(yōu)
            企業(yè)java應用的性能調優(yōu)是一項艱巨的、有時(shí)甚至是徒勞的任務(wù),這是由現代應用的復雜性和缺少正規的調優(yōu)方法導致的?,F代企業(yè)應用與十年前的應用相比差距很大,

              企業(yè)java應用的性能調優(yōu)是一項艱巨的、有時(shí)甚至是徒勞的任務(wù),這是由現代應用的復雜性和缺少正規的調優(yōu)方法導致的?,F代企業(yè)應用與十年前的應用相比差距很大,如今這些應用支持多輸入、多輸出、復雜的框架和業(yè)務(wù)處理引擎。而十年之前,基于web的企業(yè)應用只是通過(guò)網(wǎng)絡(luò )瀏覽器獲得輸入信息,然后與數據庫或者遺留系統交互進(jìn)行后臺處理,最后把輸出結果返回給瀏覽器(HTML)?,F在,輸入信息可以來(lái)自HTML瀏覽器、富客戶(hù)端、移動(dòng)設備或者網(wǎng)絡(luò )服務(wù),它可以跨越運行在不同架構下的servlets或者門(mén)戶(hù)容器,這反過(guò)來(lái)又可能調用企業(yè)bean,外部web服務(wù)或者把處理委托給業(yè)務(wù)規則引擎。每一個(gè)這樣的組件都可能與內容管理系統、緩存層、眾多數據庫和遺留系統交互。輸出的信息通常以獨立于展現層的形式保存,隨后轉化為HTML、XML、WML或者其他任意客戶(hù)端需要的格式?,F代應用比過(guò)去包含更多移動(dòng)部分和“黑盒子”,這對性能調優(yōu)提出了巨大的挑戰。

              相關(guān)廠(chǎng)商內容

              大型網(wǎng)站數據庫架構演變:沃趣科技CEO陳棟

              優(yōu)化您的數據庫與時(shí)間,實(shí)現更高性能

              《白帽子講Web安全》,“道哥的黑板報”,吳翰清:重新定義WAF

              虛擬化技術(shù)自動(dòng)化測試環(huán)境部署:EMC高級軟件工程師邵育亮

              持續集成與持續交付專(zhuān)家喬梁:近十年實(shí)戰項目案例之深度剖析

              相關(guān)贊助商

              QCon全球軟件開(kāi)發(fā)大會(huì )2013,北京國際會(huì )議中心,4月25~27日,最后報名中詳情請點(diǎn)擊!

              除了復雜性提高,性能調優(yōu)技術(shù)其藝術(shù)性要大于科學(xué)性,還因為大多數性能調優(yōu)指南都側重于性能指標,有時(shí)晦澀難懂,也可能影響用戶(hù)體驗。本文嘗試把性能調優(yōu)活動(dòng)變成一種“科學(xué)”范疇內的行為,提供了一種可重用的關(guān)注用戶(hù)體驗的方法,利用“等待點(diǎn)”(也就是應用中引起某請求等待的部分)分析應用架構??傊?,基于等待的調優(yōu)方法允許性能工程師們通過(guò)優(yōu)化用戶(hù)體驗快速實(shí)現可度量的性能提高。

              性能調優(yōu)過(guò)程

              在詳細介紹基于等待調優(yōu)和等待點(diǎn)分析方法之前,本節首先對有效的性能調優(yōu)過(guò)程做一個(gè)概述。性能調優(yōu)可以簡(jiǎn)單的概括為四步:

              負載測試

              容器調優(yōu)

              應用調優(yōu)

              迭代

              像大多數計算機科學(xué)一樣,性能調優(yōu)是一個(gè)迭代的過(guò)程。首先,創(chuàng )建一個(gè)合適的負載測試,其中包含了均衡的、具有代表性的服務(wù)請求,這都是容器調優(yōu)實(shí)踐可以滿(mǎn)足的。隨著(zhù)容器被不斷調優(yōu)和測試壓力的增大,應用程序的瓶頸逐漸顯現出來(lái)。隨著(zhù)應用的瓶頸被定位和解決,應用行為會(huì )發(fā)生變化,這就要求容器再次調優(yōu)。在容器和應用之間的迭代過(guò)程會(huì )一直進(jìn)行到性能到達可以接受的條件(或者直到項目已經(jīng)到期必須發(fā)布時(shí))。

              負載測試方法

              啟動(dòng)一個(gè)性能調優(yōu)實(shí)踐的先決條件是創(chuàng )建一整套合適的負載測試集合。每一個(gè)負載測試必須滿(mǎn)足以下兩點(diǎn):

              代表性,必須體現最終用戶(hù)的業(yè)務(wù)場(chǎng)景(或期望的場(chǎng)景)

              均衡性,必須符合最終用戶(hù)不同行為的比例分配

              也就是說(shuō),負載必須能夠按照最終用戶(hù)的實(shí)際操作比例來(lái)模擬用戶(hù)動(dòng)作。為了說(shuō)明均衡最終用戶(hù)動(dòng)作的重要性,請看下面這個(gè)例子:在保險索賠部門(mén),員工執行以下操作:

              用戶(hù)上午八點(diǎn)登陸系統。

              上午每人平均處理五個(gè)索賠請求。

              大約80%的用戶(hù)忘記在吃飯之前注銷(xiāo)賬號,導致session過(guò)期。

              午飯后,用戶(hù)重新登錄系統。

              下午每人平均處理五個(gè)索賠申請。

              下班之前生成兩個(gè)報告。

              80%的用戶(hù)回家前注銷(xiāo)賬號。

              這個(gè)例子是一個(gè)真實(shí)應用的簡(jiǎn)化版,但是它足夠在這些服務(wù)請求建立一個(gè)平衡。這個(gè)場(chǎng)景展現的均衡是:兩次登陸,十次索賠處理,兩次報告和一次注銷(xiāo)。

              如果負載生成器把壓力均勻分布在不同的服務(wù)請求上又會(huì )怎么樣呢?在本例中,用戶(hù)登陸和注銷(xiāo)功能會(huì )接收與處理與理賠請求相同的負載。如果是1000個(gè)并發(fā)用戶(hù),登陸功能會(huì )很快崩潰,導致企業(yè)投資建立一個(gè)能夠處理這種負載的登陸組件,而實(shí)際上這種負載根本不會(huì )發(fā)生。更糟糕的是,本例中由于最大的瓶頸看似存在于登陸功能上,所以調優(yōu)的努力會(huì )側重該功能,而忽視索賠處理功能??傊?,一個(gè)非均衡的負載可能導致調優(yōu)過(guò)程錯誤的關(guān)注于支持那些絕不會(huì )發(fā)生的負載的組件,而不是那些真正需要調優(yōu)的部分!

              判斷一個(gè)負載對于應用是均衡的和代表性的標準,對于測試一個(gè)已存在的應用(或者一個(gè)新版本)還是一個(gè)全新的應用是不同的。

              已存在應用

              已存在應用跟一個(gè)全新應用相比,一個(gè)明顯的優(yōu)點(diǎn)是:真實(shí)的用戶(hù)行為可以在實(shí)際生產(chǎn)環(huán)境中觀(guān)察獲得。根據請求的本質(zhì)和它們如何被應用定義,可以通過(guò)兩個(gè)選擇定義最終用戶(hù)行為:

              訪(fǎng)問(wèn)日志

              最終用戶(hù)體驗監視器

              對于大多數基于web的應用來(lái)說(shuō),訪(fǎng)問(wèn)日志提供了足夠的資源分析服務(wù)請求的本質(zhì)和它們的均衡關(guān)系。Web服務(wù)器可以配置成抓取最終用戶(hù)請求信息并存儲在一 個(gè)日志文件中,稱(chēng)之為“訪(fǎng)問(wèn)日志”(因為該文件通常命名為“access.log”)。使用訪(fǎng)問(wèn)日志定位用戶(hù)行為的關(guān)鍵是應用交互需要能夠通過(guò)不同的 URI來(lái)區分。例如,如果之前例子的動(dòng)作采用類(lèi)似“/login.do”、“/processClaim.do”、“/logout.do”的URI,那 么我們可以非常容易的在訪(fǎng)問(wèn)日志中發(fā)現這些行為并確定它們的比例。更進(jìn)一步,通過(guò)最頻繁的URI來(lái)排序訪(fǎng)問(wèn)日志可以快速發(fā)現占比例前n%的的若干請求,這 個(gè)“n”%應該在80%左右。

              訪(fǎng)問(wèn)日志是文本文件,可以手動(dòng)檢查(不是一個(gè)很有效率的任務(wù)),可以通過(guò)編程解析,也可以通過(guò)工具來(lái)分析。對此有很多商業(yè)解決方案,不過(guò)Quest Software有一個(gè)產(chǎn)品Funnel Web Analyzer,雖然多年以前已經(jīng)終止開(kāi)發(fā),但是由于其很受歡迎的命令,公司就作為將其作為自由軟件重新發(fā)布。Funnel Web Analyzer可以分析大多數訪(fǎng)問(wèn)日志并顯示用于創(chuàng )建合適負載測試的信息。

              一些應用不像上面提到的那樣簡(jiǎn)單,其用戶(hù)交互無(wú)法很容易的通過(guò)一個(gè)URI來(lái)定位。例如,考慮一個(gè)包含前端控制器servlet的應用,該servlet接受一個(gè)XML有效信息——并且其業(yè)務(wù)處理邏輯就存在于該信息中。在本例中,需要另外的工具來(lái)偵測其有效信息以判斷其符合哪個(gè)業(yè)務(wù)場(chǎng)景。這可以通過(guò)使用 servlet過(guò)濾器或者一個(gè)稱(chēng)為最終用戶(hù)體驗監視器的硬件設備來(lái)完成。

            原文轉自:http://www.infoq.com/cn/articles/Wait-Based-Tuning-Steven-Haines

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>