版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1/36.V1.0合道信息科技2/36.項目名:項目編號:羅承偉使用者:部門名稱:研發(fā)部聲明:文檔狀態(tài)□草稿■正式文檔評審人員評審組組長:評審組成員:評審時間今修訂文檔歷史記錄作者日期作者日期說明初稿羅承偉V羅承偉3/36.目錄1.性能調(diào)優(yōu)流程466783.J2EE應(yīng)用監(jiān)控153.1、數(shù)據(jù)庫連接池監(jiān)控(Druid)153.2、容器管理與監(jiān)控(psi-probe)184/36.1.性能調(diào)優(yōu)流程性能調(diào)優(yōu)無疑是個龐大且復(fù)雜的話題,也是項目中非常重要的一環(huán)。由于性能調(diào)優(yōu)涵蓋的面實在是太多了,我們僅看看性能調(diào)優(yōu)過程中常見的一些做法。性能調(diào)優(yōu),首先是要確定性能調(diào)優(yōu)的目標是什么,如果現(xiàn)在應(yīng)用已經(jīng)滿足了需求,就沒必要去做性能調(diào)優(yōu)了,畢竟不經(jīng)過一個系統(tǒng)的過程,其實是無法確定你所做的性能調(diào)整是否真的調(diào)優(yōu)了性能,是否沒有造成應(yīng)用中其他的問題,所以確定性能目標是非常重要的,在定義性能目標的時候通常這么定義的呢:2.QualityofService效勞的質(zhì)量,在軟件系統(tǒng)方面我們認為主要表現(xiàn)在請求的出錯率,系統(tǒng)的load等。對于任何請求所能承受的最大響應(yīng)時間。的訪問次數(shù)〞。例如一個web系統(tǒng),需要定義出來的目標是:最大響應(yīng)時間:最長允許的響應(yīng)時間為5秒。至于請求的平均響應(yīng)時間這些就不在性能調(diào)優(yōu)目標中定義,因為要到達TPS的要求,響應(yīng)時間是必須要到達一個級別的,而且響應(yīng)時間隨著高并發(fā)是會出現(xiàn)劣化的。達多少。在確定好了性能目標后,重要的就是如何來測量系統(tǒng)的性能了。5/36.對于新系統(tǒng)而言,需要評估出其正式運行時的數(shù)據(jù)量的增長情況;而對于已運行的系統(tǒng),那么需要根據(jù)監(jiān)控獲取到系統(tǒng)的運行數(shù)據(jù)〔例如頂峰并發(fā)數(shù)、系統(tǒng)的響應(yīng)速度情況、系統(tǒng)的新系統(tǒng)而言要,評估出具體的性能相對來說稍微好做一點因,為此時系統(tǒng)通常較為單純,數(shù)據(jù)量的增長也不可能是一夜之間增長的因,此根本可以按照一種正常的方法在測試環(huán)境評估出其正式運行的性能。而對于已運行的系統(tǒng)而言,那么較為麻煩,因為通常來講要在測試環(huán)境中模擬正式運行環(huán)境根本是不太可能的因,此這個時候通常要采取一些模擬的方法或更高壓力的方法來盡量更為準確的評估出系統(tǒng)的性能。在測試系統(tǒng)性能時,通??刹捎玫姆椒ㄓ校嚎山柚鷨卧獪y試來測試某個請求的性能壓力測試無疑是測量系統(tǒng)性能中最常采用的方式,根據(jù)定義的性能目標對系統(tǒng)進展壓力測試,以確定系統(tǒng)是否滿足性能要求,同時也可以根據(jù)壓力測試的結(jié)果來分析系統(tǒng)的瓶頸,進而進展對應(yīng)的調(diào)優(yōu),可用于做壓力測試的工具還是不少的,像loadrunner、Jmeter等。由于性能測試屬于測試團隊的工作疇,就不在這展開去講了。根據(jù)測量系統(tǒng)性能的結(jié)果,多數(shù)是可以分析出系統(tǒng)性能瓶頸,同時還可以結(jié)合像jvm堆棧、jprofiler、系統(tǒng)日志等來進展進一步確實定,另外也可以根據(jù)性能調(diào)優(yōu)人員的經(jīng)歷,例如可以去了解開發(fā)人員是否采用了不適合的數(shù)據(jù)結(jié)構(gòu)等。和jboss進展優(yōu)化的資料很多,本文僅僅對JVM參數(shù)進展討論。6/36JavaJava虛擬機啟動時創(chuàng)立的。〞“在JVM中堆之外的存稱為非堆是Java代碼可與的存,是留給開發(fā)人員使用的;非堆就是JVM留給自己用的所,以方法區(qū)、JVM部處理或優(yōu)化所需的存(如JIT編譯后的代碼緩存)、每個類結(jié)構(gòu)(如運行時常數(shù)池、字段和方法數(shù)據(jù))以與方法和構(gòu)造方法的代碼都在非堆存中。本地方法棧線程創(chuàng)立時產(chǎn)生,方法執(zhí)行時生成棧幀方法區(qū)存儲類的元數(shù)據(jù)信息常量等堆Java代碼中所有的new操作DirectBytebufferJNICompileGCmx相等以防止在每次GC后調(diào)整堆的大小。對象的堆存由稱為垃圾回收器的自動存管理系統(tǒng)回7/36收。Space存放新生的對象SurvivorSpace有兩個,存放每次垃圾回收后存活的對象主要存放應(yīng)用程序中生命周期長的存活對象設(shè)置最大非堆存的大小,默認是物理存的1/4。PermanentGeneration保存虛擬機自己的靜態(tài)(refective)數(shù)據(jù)field等等GC種類)用于編譯和保存本地代碼〔nativecode〕的存8/36.JVM存的最大值跟操作系統(tǒng)有很大的關(guān)系。簡單的說就32位處理器雖然可控存空間有參數(shù)名稱含義默認值初始堆大小物理存的默認(MinHeapFreeRatio參數(shù)1/64(<1G可以調(diào)整)空余堆存小于40%B)時,JVM就會增大堆直到-Xmx的最大限制.最大堆大小物理存的默認(MaxHeapFreeRatio參數(shù)1/4(<1GB可以調(diào)整)空余堆存大于70%)時,JVM會減少堆直到-Xms的最小限制lator)survivorspace).與jmap的。整個堆大小=年輕代大小+年老代大小+持久代大小.增大年輕代后,將會減小年老代大小.此值對系統(tǒng)性能影響較大,Sun官方推薦配置為整個堆的3/8設(shè)置年輕代大小(for1.3/1.4)年輕代最大值(for1.3/1.4)設(shè)置持久代(perm物理存的設(shè)置持久代最大值物理存的-Xss每個線程的堆棧大小JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K.更具應(yīng)用的線程所需存大小進展調(diào)整.在一樣物理.9/36存下,減小這個值能生成更多的線程.但是操作系統(tǒng)對一個進程的線程數(shù)還是有限制的,不能無限生成,經(jīng)歷值在該是128k夠用的大的對性能影響比擬大,需要嚴格測試?!残iL〕和threadstacksize選項解釋很類似,官方文檔似乎沒有解釋,在論壇中有這樣一句話:"〞-XssistranslatedinaVM一般設(shè)置這個值就可以了。ThreadStackSize(0meansusedefaultstacksize)[Sparc:512;Solarisx86:320(was256priorin5.0andearlier);Sparc64(was0in5.0andearlier);allothers0.]和兩個Survivor值除(去持久代)年老代所占比值為1:4,年輕代占整個堆棧的1/5況下,該參數(shù)不需要進展設(shè)置。-XX:SurvivorRatio區(qū)的大小比值設(shè)置為8,那么兩個Survivor區(qū)與一個Eden區(qū)的比值為2:8,一Survivor區(qū)占整個年輕代的存頁的大小不可設(shè)置過大,會影響原始類型的快速優(yōu)化-XX:+DisableExplicitGC關(guān)閉System.gc()這個參數(shù)需要嚴格的測試垃圾最大年齡如果設(shè)置為的0話,那么年輕代.10/36對象不經(jīng)過Survivor區(qū),直接進入年老代.對于年老代比擬多的應(yīng)用,可以提高效率.如果將此值設(shè)置為一個較大值,那urvivor進展屢次復(fù)制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概率該參數(shù)只有在串行GC時才有效.加快編譯鎖機制的性能改善加快編譯鎖機制的性能改善圾回收每兆堆空閑空間中1sSoftReference的存活時間softlyreachableobjectswillremainaliveforsometimetheywerereferenced.Thedefaultvalueisonesecondoflifetimeperfree對象超過多大是直0接在舊生代分配eshold單位字節(jié)新對象超過多大是直0接在舊生代分配esholdParallelScavengeGC時無效另一種直接在舊生代分配的情況是大的數(shù)組對象,且數(shù)組中無外部引用對象.FullGC時是否先falseCollectGenFirstFullFullGC采用parallelMSC(此項待驗證)選擇垃圾收集器為并行收集器.此配置僅對年輕代有效即.上述配置下,年輕代使用并發(fā)收集,而年老代仍舊使用串行收集.(此項待驗證)設(shè)置年輕代為并行設(shè)置年輕代為并行配置自行設(shè)置所,以無需再設(shè).11/36置此值并行收集器的線程數(shù)年老代垃圾收集方式并行收集器的線程數(shù)年老代垃圾收集方式為并行收集(Parallel每次年輕代垃圾回收的最長時間(最大暫停時間)自動選擇年輕代區(qū)大小和相應(yīng)的Survivor區(qū)比例-XX:ParallelGCThreads如果無法滿足此時間,JVM自動調(diào)整年輕代大小,以滿足此值.設(shè)置此選項后,并行收集器會自動選擇年輕代區(qū)大小和相應(yīng)的Survivor標系統(tǒng)規(guī)定的最低相應(yīng)時間或者收集頻率等,此值建議使用設(shè)置垃圾回收時間占程序運行時間的百分比Full設(shè)置垃圾回收時間占程序運行時間的百分比FullGC前調(diào)用YGCtruetoafullGC.(Introduced測試中配置這個以后,-XX:NewRatio=4的配置失效了,原因不明所.以,此時年長時間大存使用的優(yōu)化,能檢查計算資源〔存,處理器數(shù)量〕在4CPU的機器上已經(jīng)顯示有提多少次后進展存壓縮由于并發(fā)收集器不對存空間進展壓縮整,理所,以運行一段時間多少次后進展存壓縮行效率降低.此值設(shè)置運行多.12/36縮整,理.on對年老代的壓縮CMS是不會移動存的,因此,這個非常容易產(chǎn)生碎片,on對年老代的壓縮個參數(shù)是個好習慣??赡軙绊懶阅?但是可以消除碎片nlynly化定義開場CMS收集-XX:CMSInitiatingOccupancyFract使用cms作為垃圾92ion=70回收 failed(見下面介紹)錯誤,該值的設(shè)置需要滿足以下公式tion計算公式raction到達多少比率時觸發(fā)輔助信息-XX:+PrintGC輸出形式:0.0094143secs][FullGC0.0650971secs]-XX:+PrintGCDetails輸出形式:[GC[DefNew:0.0123035secs]0.0124633secs]0.0000665secs][Tenured:13/36.-Xloggc:filenameXX:+PrintTenuringDistribution打印垃圾回收期間程序暫停的時間.可與上面混合使用打印每次垃圾回收前,程序未中斷的執(zhí)行時間.可與上面混合使用打印GC前后的詳細堆棧信息把相關(guān)日志信息記錄到文件以便分析.與上面幾個配合使用garbagecollectsbeforeprintingthehistogram.查看TLAB空間的使用情況查看每次minorGC后新的存活周期的閾值0.0433488secs]0.0436268secs]可與-XX:+PrintGC-XX:+PrintGCDetails混合使用輸出形式:11.851:[GC0.0082960secs]輸出形式:Totaltimeforwhichapplicationthreads輸出形式:Applicationtime:Desiredsurvivorsize活周期的閾值為7。14/36.示例參數(shù)僅供參考:--server-XX:+DisableExplicitGC說明:-Xnoclassgc禁用類垃圾回收,性能會高一點;-XX:+DisableExplicitGC禁止System.gc(),免得程序員誤調(diào)用gc方法影響性能;帶CMS參數(shù)的都是和并發(fā)回收相關(guān)的,不明白的可以查看上面的參數(shù)詳解或上網(wǎng)搜索。CMSInitiatingOccupancyFraction,這個參數(shù)設(shè)置有很大技巧,根本上滿足n是年輕代共500兆〕里所有對象都搬到年老代里,550兆的空間也足夠了,所以只要滿足上面的公式,就不會出現(xiàn)垃圾回收時的promotionfailed;15/363.J2EE應(yīng)用監(jiān)控J2EE應(yīng)用在運行過程中,我們可以通過多種監(jiān)控手段來對應(yīng)用進展監(jiān)控,監(jiān)控的容包括數(shù)據(jù)庫資源的訪問,CPU占用,存占用,運行狀態(tài)。通過對容器與應(yīng)用的監(jiān)控,找出性能瓶頸,提高應(yīng)用的性能。3.1、數(shù)據(jù)庫連接池監(jiān)控(Druid)應(yīng)用系統(tǒng)性能出現(xiàn)問題,首先考慮進展排查的就是數(shù)據(jù)調(diào)用的性能問題,是否存在性能較差的查詢,是否表結(jié)構(gòu)設(shè)計需要進展優(yōu)化,是否加載了過多的數(shù)據(jù),占用了I/O與帶寬。公司JAVA平臺采用了阿里巴巴的開源數(shù)據(jù)庫連接池,能夠?qū)?shù)據(jù)庫的訪問與操作提供實時的監(jiān)控與分析。?下載Druid一、下載jar包mavencentralrepository:alibabamavenrepository:code.alibabatech./mvn/releases//alibaba/druid/?開啟Druid置監(jiān)控頁面Druid置提供了一個StatViewServlet用于展示Druid的統(tǒng)計信息。這個StatViewServlet的用途包括:.提供監(jiān)控信息展示的html頁面16/36提供監(jiān)控信息的JSONAPI根據(jù)配置中的url-pattern來訪問置監(jiān)控頁面,如果是上面的配置,置監(jiān)控頁面的首頁是/druid/index.html例如:localhost:8080/druid/index.html二、配置allow和denyStatViewSerlvet展示出來的監(jiān)控信息比擬敏感,是系統(tǒng)運行的部情況,如果你需要做訪問控制,可以配置allow和deny這兩個參數(shù)。比方:判斷規(guī)那么w?如果allow沒有配置或者為空,那么允許所有訪問。假設(shè)要開啟更多監(jiān)控,請參見Druid官方文檔:s://github./alibaba/druid/wiki17/36Druid監(jiān)控界面截圖:首頁18/363.2、容器管理與監(jiān)控(psi-probe)可方便的管理和監(jiān)控Tomcat與Jboss實例(Jboss不支持7以上版本)。1.下載地址code.google./p/psi-probe/downloads/list2.安裝①解壓,將probe.war放進webapps目錄。19/36③其他配置Linux版本:catalina.sh中參加如下語句:windows版本:catalina.bat中參加:④訪問監(jiān)控應(yīng)用例如:localhost:8080/probe3.權(quán)限控制等角色,對應(yīng)可操作的功能如下表:么都能操作。的部署與效勞的維護相關(guān)操作。而為了方便項目組開發(fā)人員對本項目的維護和操作,可以開放權(quán)限較小的賬號,便于跟蹤應(yīng)用的運行狀態(tài),下載分析錯誤日志與操作日志。FeaturesbyRole20/36.Context:listXXXContext:statusXXXContext:viewservletsXXXContext:viewservletmappingsXXXContext:viewfiltersXXXContext:viewfiltermappingsXXXContext:listattributesXXXContext:removeattributesXXContext:startXXContext:stopXXXXContext:viewcontext.xmlextdeploySession:listXXXSession:listattributesXXXSession:searchattributesXXXSession:removeattributesXXSession:viewlast-accessedIPXXXSession:expiresingleXXSession:expiremultipleXXJSP:listXXJSP:viewsourceXXJSP:viewservletsourceXXJSP:compilesingleXXJSP:compilemultipleXX21/36.JSP:compileallondeploymentJSP:discardallcompiledDataSource:listXXXXXXDataSource:statusXXXDataSource:resetXXDataSource:testXDataSource:viewqueryhistoryXXLog:listXXXLog:tailinreal-timeXXXXXXThread:listXXXThread:listpoolsXXXThread:viewexecutionstackXXThread:killConnector:statusXXXConnector:real-timeusagechartsXXXCluster:statusXXXCluster:real-timetrafficchartsXXXXXXJVM:statusXXXJavaServiceWrapper:statusXXXJavaServiceWrapper:restartJVM22/36System:propertiesSystem:OSdetailsXXXXXXXXXX應(yīng)用程序可(以啟動/停止/卸載應(yīng)用)應(yīng)用發(fā)布(發(fā)布應(yīng)用)23/36日志可(以在線查看,下載日志)日志(動態(tài)調(diào)整日志級別)24/36運行監(jiān)控25/36.運行監(jiān)控VisualVM提供在Java虛擬機(JavaVirutalMachine,JVM)上運行的Java應(yīng)用程序的詳細信息。在VisualVM的圖形用戶界面中,您可以方便、快捷地查看多個Java應(yīng)用程序的相關(guān)信息?!舱怨俜健澈唵握f來,VisualVM是一種集成了多個JDK命令行工具的可視化工具,它能為您提供強大的分析能力所。有這些都是免費的!它囊括的命令行工具包括jstat,JConsole,jstack,jmap和jinfo,這些工具與JDK的標準版本是一致的。同時它還支持在MBeans上進展瀏覽和操作。盡管VisualVM自身要在JDK6這個版本上運行,但是JDK1.4以上版本的程序它都能監(jiān)控。VisualVM的一個最大好處就是,它已經(jīng)在你的JDKbin目錄里了,只要你使用的是JDK1.6Update7之后的版本。點擊一下jvisualvm.exe圖標它就可以運行了。VisualVM啟動成功!可以看到V
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年企業(yè)勞動協(xié)議規(guī)范化樣本
- 改性和復(fù)配無鹵阻燃劑項目可行性研究報告寫作模板-備案審批
- 房地產(chǎn)測繪精準服務(wù)協(xié)議2024
- 齊魯工業(yè)大學《材料與工藝》2021-2022學年第一學期期末試卷
- 齊魯工業(yè)大學《UI設(shè)計》2023-2024學年期末試卷
- 齊魯工業(yè)大學《Java面向?qū)ο蟪绦蛟O(shè)計》2021-2022學年期末試卷
- 公司章程和酒店或物業(yè)管理合同
- 南京信息工程大學《知識產(chǎn)權(quán)法學》2023-2024學年期末試卷
- 南京信息工程大學《有機電子學》2022-2023學年期末試卷
- 2024教育領(lǐng)域咨詢顧問服務(wù)協(xié)議
- 大連某項目鋼結(jié)構(gòu)深化設(shè)計與施工工程招標文件
- 生涯規(guī)劃展示
- 機器學習復(fù)習題附有答案
- 風機行業(yè)報告
- 如何引領(lǐng)教師專業(yè)成長
- 《電力設(shè)備消防典型準則》(DL5027-2022)
- 小學生冬季安全教育知識講座
- 公司商務(wù)部保密管理制度
- 《醫(yī)院發(fā)生火災(zāi)應(yīng)急演練方案》
- 【公司盈利能力分析國內(nèi)外文獻綜述2500字】
- 2023林業(yè)戰(zhàn)略合作框架協(xié)議正規(guī)版
評論
0/150
提交評論