一個(gè)典型的J2EE系統(tǒng)由DB、應(yīng)用、應(yīng)用(WEB)服務(wù)器、JVM組成。
調(diào)優(yōu)可分別針對(duì)這幾個(gè)部分調(diào)優(yōu),下面介紹一下各個(gè)部分調(diào)優(yōu)的一些經(jīng)驗(yàn)。
1. DB調(diào)優(yōu):DB調(diào)優(yōu)主要關(guān)注下面幾個(gè)方面:1)選擇合適索引;2)避免復(fù)雜查詢;3)盡量將復(fù)雜運(yùn)算挪到應(yīng)用中,以降低DB復(fù)雜,因?yàn)樽寫?yīng)用可伸縮的代價(jià)遠(yuǎn)比讓DB可伸縮的代價(jià)低;4)避免關(guān)聯(lián)查詢;調(diào)優(yōu)的過(guò)程中,可借助Oracle的sql將比較耗時(shí)的SQL查詢出來(lái),再針對(duì)性的優(yōu)化。
2. 應(yīng)用調(diào)優(yōu):應(yīng)用調(diào)優(yōu)主要分成兩個(gè)方面:1)用Jprofiler或optimizeit等工具找出執(zhí)行比較耗時(shí)的代碼,并針對(duì)性的優(yōu)化;2)應(yīng)用運(yùn)行時(shí),通過(guò)打JVM的堆棧來(lái)分析應(yīng)用的線程是否因資源競(jìng)爭(zhēng)導(dǎo)致block,然后導(dǎo)致CPU無(wú)法充分利用,從而應(yīng)用性能上不去,找出性能瓶頸后可針對(duì)性的做優(yōu)化。
3. 應(yīng)用服務(wù)器調(diào)優(yōu):主要調(diào)節(jié)數(shù)據(jù)庫(kù)連接池大小,連接數(shù)大小(tomcat就有連接數(shù)大小)等
4. JVM調(diào)優(yōu):主要針對(duì)應(yīng)用的特點(diǎn),調(diào)整JVM參數(shù),使應(yīng)用運(yùn)行更穩(wěn)定。
判斷性能調(diào)優(yōu)是否到位的方法是看數(shù)據(jù)庫(kù)服務(wù)器和應(yīng)用服務(wù)器的CPU占用率,首先要確認(rèn)不是內(nèi)存的問(wèn)題,確認(rèn)服務(wù)器沒(méi)有產(chǎn)生頁(yè)面交換;然后就看應(yīng)用側(cè)和DB側(cè)的CPU是否能夠達(dá)到90%以上了,一般來(lái)講,要求應(yīng)用側(cè)的CPU使用率達(dá)到90%以上。