最近,部門的一個(gè)關(guān)于基礎(chǔ)數(shù)據(jù)和權(quán)限控制的項(xiàng)目已近尾聲,可由于性能的問題,一直沒有做好正式上線運(yùn)行的準(zhǔn)備,由此,引發(fā)了一些我對(duì)壓力測(cè)試的認(rèn)識(shí)。
MI 的LoadRunner8.0是一個(gè)工業(yè)級(jí)負(fù)載測(cè)試標(biāo)準(zhǔn)工具,用它進(jìn)行壓力測(cè)試,可以節(jié)約公司的人力,財(cái)力, 它本身可以模擬成千上萬個(gè)用戶并發(fā)訪問系統(tǒng),給系統(tǒng)一定的壓力,模擬實(shí)際的生產(chǎn)環(huán)境,并且根據(jù)測(cè)試結(jié)果,它可以幫助我們分析系統(tǒng)的瓶頸,提供我們應(yīng)用系統(tǒng)的性能。它分三個(gè)部分,首先要錄制腳本,并在此基礎(chǔ)上進(jìn)行一些編輯(例如設(shè)置集合點(diǎn),事務(wù),參數(shù)化數(shù)據(jù)等),然后把這個(gè)腳本放到一個(gè)特定的場(chǎng)景里去執(zhí)行,執(zhí)行前可以進(jìn)行一些運(yùn)行期的設(shè)置,運(yùn)行過程中可以監(jiān)控系統(tǒng)的一些反映參數(shù),最后通過它的分析工具來分析測(cè)試結(jié)果,給我們的應(yīng)用系統(tǒng)提供一些性能方面的合理化建議。
壓力測(cè)試做完之后,雖然知道了問題,但是問題的方向是比較模糊的,為此,可以借助Quest公司的JProbe Suite性能測(cè)試工具進(jìn)行內(nèi)存,代碼覆蓋,方法調(diào)用時(shí)間方面的分析,查出具體的問題,進(jìn)行修改發(fā)布之后,再利用LoadRunner進(jìn)行反復(fù)測(cè)試,看性能是否優(yōu)化了。
在壓力測(cè)試的過程中,應(yīng)用服務(wù)器和數(shù)據(jù)庫的一些參數(shù)調(diào)優(yōu)也是非常重要的,針對(duì)應(yīng)用服務(wù)器,比較重要的參數(shù)有jvm占用堆大小,線程池的大小,連接池的大小,prepareStatement Cache條數(shù)大小;針對(duì)數(shù)據(jù)庫,表空間,索引,事務(wù)級(jí)別,鎖大小,臨時(shí)表這些參數(shù)也對(duì)系統(tǒng)應(yīng)用有重要的影響。同時(shí),在java應(yīng)用里,sql優(yōu)化,數(shù)據(jù)庫連接的管理,緩存的使用,查詢分頁,防內(nèi)存泄露的代碼的使用會(huì)直接對(duì)應(yīng)用系統(tǒng)造成巨大的性能影響。
跟蹤應(yīng)用服務(wù)器里jvm垃圾回收的頻率和所消耗時(shí)間的時(shí)候,可以加 -Xverbosegc參數(shù)來打印垃圾回收的詳細(xì)信息。分析gc日志的工具有GCAnalyze 和HeapRoot 。