數(shù)據(jù)庫性能優(yōu)化課件_第1頁
數(shù)據(jù)庫性能優(yōu)化課件_第2頁
數(shù)據(jù)庫性能優(yōu)化課件_第3頁
數(shù)據(jù)庫性能優(yōu)化課件_第4頁
數(shù)據(jù)庫性能優(yōu)化課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

性能問題探討2009年9月性能問題探討2009年9月架構(gòu)我們的系統(tǒng)部署方式雖然多種多樣的,但是從整個系統(tǒng)架構(gòu)來說,不外乎左邊圖所示的結(jié)構(gòu)。架構(gòu)我們的系統(tǒng)部署方式雖然多種多樣的,但是從整個系統(tǒng)大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱操作系統(tǒng)優(yōu)化目前我公司應(yīng)用系統(tǒng)部署到的操作系統(tǒng)有:AIX、HP-UX、Solaris、Linux、Windows2003。操作系統(tǒng)引起問題的地方主要有兩個方面:內(nèi)核問題和資源問題。操作系統(tǒng)優(yōu)化目前我公司應(yīng)用系統(tǒng)部署到的操作系統(tǒng)有:AIX操作系統(tǒng)優(yōu)化內(nèi)核問題內(nèi)核問題主要是內(nèi)核參數(shù)的設(shè)置方面。這個參數(shù)主要是分為兩部分:內(nèi)存相關(guān)的和網(wǎng)絡(luò)相關(guān)的。比如:我們在安裝Oracle時未按照官方說明,修改內(nèi)存相關(guān)的內(nèi)核參數(shù),就會導(dǎo)致無法使用大的共享內(nèi)存塊。再比如,一些網(wǎng)絡(luò)參數(shù)會影響weblogic的吞吐量。案例:適當(dāng)調(diào)整udp_sendspace值網(wǎng)絡(luò)參數(shù)udp_sendspace是UDP的發(fā)送緩存,默認(rèn)值為8K,為減少I/O異常,需調(diào)整為32k。操作系統(tǒng)優(yōu)化內(nèi)核問題案例:適當(dāng)調(diào)整udp_sendspace操作系統(tǒng)優(yōu)化案例:適錄調(diào)整nofiles值在東莞和南海都遇到了以下錯誤:<BEA-002616><Failedtolistenonchannel"Default"on05:7001,failurecount:10,failingfor45seconds,.SocketException:Toomanyopenfiles>這個錯誤主要就是因為應(yīng)用系統(tǒng)打開了太多的文件句柄。因為在Unix下,默認(rèn)一個用戶只能打開2000個文件句柄。一旦出現(xiàn)這個錯誤,weblogic將無法對外提供響應(yīng)。這個可以通過增加資源限制中的nofiles的值來解決。資源問題

Unix和Linux對每一個用戶都有一個資源限制。這些限制可能包括能創(chuàng)建的文件大小、能同時打開的文件數(shù)量、能同時啟動的進(jìn)程數(shù)、能使用的最大內(nèi)存等。UNIX環(huán)境中可以使用ulimit查看。操作系統(tǒng)優(yōu)化案例:適錄調(diào)整nofiles值資源問題大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)的問題主要是兩個方面:響應(yīng)時間和吞吐量。網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)的問題主要是兩個方面:響應(yīng)時間和吞吐量。網(wǎng)絡(luò)優(yōu)化響應(yīng)時間這里的響應(yīng)時間主要是查找和連接網(wǎng)絡(luò)的時間。響應(yīng)時間過長的常見原因是DNS的解析造成的。案例:DNS解析造成服務(wù)啟動慢海南EIP在項目實施中,遇到服務(wù)啟動很慢的問題,一個服務(wù)的啟動時間需要20多分鐘。后來發(fā)現(xiàn)系統(tǒng)走了DNS解析,沒有走本地解析。修改為本地解析后,啟動時間縮短為4分鐘左右。網(wǎng)絡(luò)優(yōu)化響應(yīng)時間案例:DNS解析造成服務(wù)啟動慢網(wǎng)絡(luò)優(yōu)化吞吐量吞吐量主要是指網(wǎng)絡(luò)的傳輸速度。這里只討論網(wǎng)絡(luò)設(shè)備的設(shè)置問題。案例:交換機(jī)傳輸模式影響網(wǎng)速由于惠州供電局交換機(jī)傳輸模式是“半雙工自適應(yīng)”,造成網(wǎng)速很慢,表現(xiàn)為我們的系統(tǒng)響應(yīng)很慢,后改成“全雙工”模式,系統(tǒng)響應(yīng)速度明顯提高,輸電部、計量部、變電部登錄系統(tǒng)時間,及不同設(shè)備界面切換時間響應(yīng)在2秒以內(nèi)。網(wǎng)絡(luò)優(yōu)化吞吐量案例:交換機(jī)傳輸模式影響網(wǎng)速大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱數(shù)據(jù)庫優(yōu)化目前我公司系統(tǒng)使用的數(shù)據(jù)庫主要是Oracle。Oracle優(yōu)化主要從5個方面來考慮:軟件版本、內(nèi)存、CPU、IO、數(shù)據(jù)庫對象爭用和SQL。數(shù)據(jù)庫優(yōu)化目前我公司系統(tǒng)使用的數(shù)據(jù)庫主要是Oracle。數(shù)據(jù)庫優(yōu)化軟件版本軟件版本可以從兩個方面考慮,與操作系統(tǒng)響應(yīng)的版本、與版本相關(guān)的補(bǔ)丁。如果版本與操作系統(tǒng)不一致,即便能跑起來,也會產(chǎn)生系統(tǒng)問題。另外,有些版本本身有bug,這些bug可能會造成性能問題,所以需要打上補(bǔ)丁。一般2.4以上的版本被視為穩(wěn)定版本。案例:64位機(jī)器上安裝32位oracle的性能問題惠州供電局原來的數(shù)據(jù)庫服務(wù)器cpu是64位,但是為了圖方便,安裝了32位windows2003和32位的oracle10g,造成只能使用1.7g左右的內(nèi)存,對于8g內(nèi)存的機(jī)器來說,很浪費(fèi)。后來按照oracle給出的擴(kuò)大內(nèi)存的方法進(jìn)行調(diào)整,依然無效。原因就是該機(jī)器cpu是64位的。后來改裝64位windows2003和64位oracle10g,性能提高了幾倍。數(shù)據(jù)庫優(yōu)化軟件版本案例:64位機(jī)器上安裝32位oracle的數(shù)據(jù)庫優(yōu)化內(nèi)存優(yōu)化一般Oracle建議將操作系統(tǒng)物理內(nèi)存的70%分配給它。比如,物理內(nèi)存是8G,則分配給Oracle的內(nèi)存就是5.6G。Oracle的內(nèi)存主要分兩塊:SGA和PGA。按照70%的物理內(nèi)存來劃分,則是:SGA為60%,PGA為10%。案例:內(nèi)存設(shè)置太小造成性能問題有人反映,他的系統(tǒng)很慢,感覺主要是數(shù)據(jù)庫慢。連上去看他的數(shù)據(jù)庫,發(fā)現(xiàn)SGA只有300M,PGA只有幾十M。按照70%的比例進(jìn)行調(diào)整后,發(fā)現(xiàn)數(shù)據(jù)庫性能明顯提高,相應(yīng)的系統(tǒng)吞吐量也大幅提高。數(shù)據(jù)庫優(yōu)化內(nèi)存優(yōu)化案例:內(nèi)存設(shè)置太小造成性能問題數(shù)據(jù)庫優(yōu)化CPU優(yōu)化這里把Oracle中的Processes歸為CPU方面,其實也不準(zhǔn)確。主要是考慮到它們和CPU的利用率有關(guān)。

Processes參數(shù)表明允許同時運(yùn)行的最大服務(wù)器進(jìn)程數(shù)。在獨(dú)占式連接模式下,一個

Session就啟動一個Process,你也可以認(rèn)為建立一個JDBC連接就啟動一個Process。案例:Processes設(shè)置太小造成性能問題如果Weblogic中JDBC連接池需要建立的連接數(shù)大于Processes的值時,則會出現(xiàn)連接失敗而等待。這時候增大Processes的值就會消除這種等待而提高性能。數(shù)據(jù)庫優(yōu)化CPU優(yōu)化案例:Processes設(shè)置太小造成性能數(shù)據(jù)庫優(yōu)化IO

IO主要是兩個方面:每個用戶使用自己單獨(dú)的臨時表空間、盡量關(guān)閉數(shù)據(jù)表空間的自動擴(kuò)展功能。案例:每個用戶使用自己單獨(dú)的臨時表空間如果沒有給用戶設(shè)置單獨(dú)的臨時表空間,那么用戶就會使用系統(tǒng)臨時表空間,從而引起資源競爭。上次東莞供電局邀請第三方做性能診斷時,看到我們的用戶沒有建立單獨(dú)的臨時表空間。對于這種常識性的錯誤,被別人揪出來會讓人懷疑我們的專業(yè)性的。案例:盡量關(guān)閉數(shù)據(jù)表空間的自動擴(kuò)展功能在建表空間時就應(yīng)該估算到表空間的大小,至少是未來一段時間的空間大小。而不要使用自動擴(kuò)展,因為自動擴(kuò)展在實時系統(tǒng)上也是很影響性能的。數(shù)據(jù)庫優(yōu)化IO案例:每個用戶使用自己單獨(dú)的臨時表空間數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用數(shù)據(jù)庫對象的爭用,主要是指表、索引、序列等的爭用。爭用這個意思也很好理解,一個對象被引用的多了自然就存在爭用,爭用就會產(chǎn)生等待,等待就會影響性能。案例:表被關(guān)聯(lián)的外鍵太多如果表被關(guān)聯(lián)的外健太多,當(dāng)多個關(guān)聯(lián)表同時發(fā)生數(shù)據(jù)變更時,就可能產(chǎn)生等待。所以在設(shè)計上,是不是非要堅持范式設(shè)計,也是需要我們自己取舍一下。案例:表上的索引太多如果表上的索引很多,那么在更新表的數(shù)據(jù)時,這些索引都需要被更新。所以對于沒有使用過的索引可以刪除??梢酝ㄟ^dba_indexes視圖來查詢哪些索引沒有使用過。數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:表被關(guān)聯(lián)的外鍵太多數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用

案例:實時表的數(shù)據(jù)太多原則上來說,實時表的數(shù)據(jù)應(yīng)該保持在一個比較小的規(guī)模。隨著數(shù)據(jù)的增長,應(yīng)該考慮歷史表和實時表并存。但是很多時候,我們?yōu)榱瞬樵兊姆奖?,所有?shù)據(jù)保存在一個表中。造成效率的低下。這種情況下,可以采取的措施有:

分表:根據(jù)時間(比如:年、月或日為單位),把歷史數(shù)據(jù)分成多個表;

分區(qū):根據(jù)時間或其他條件字段,對該表分區(qū);

綁定到內(nèi)存:將整個表綁定到內(nèi)存,對數(shù)據(jù)的檢索會有一定的提高,但是對于內(nèi)存要求太高。數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:實時表的數(shù)據(jù)太多數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用

案例:合理地使用分區(qū)能極大提高查詢效率深圳供電局生產(chǎn)系統(tǒng)中的缺陷模塊,有一個視圖生產(chǎn)系統(tǒng)中的缺陷模塊,有一個視圖V_DEFECT_FLOWCONTROL,這個查詢主要是針對流程跟蹤表WFT_FLOWCONTROL進(jìn)行查詢的。測試時,該表約有195萬條記錄,缺陷的記錄約有17萬條。在對流程跟蹤表WFT_FLOWCONTROL建立分區(qū)前,這個視圖的查詢時間為13.29秒;對流程跟蹤表的缺陷的數(shù)據(jù)建立分區(qū)后,查詢時間為02.43秒,查詢效率提高了約5.5倍。將缺陷的數(shù)據(jù)導(dǎo)入另外一個表,對該表建立相同的視圖進(jìn)行查詢,時間為02.26秒。對比可知,建立合適的分區(qū)與分表的效率是比較接近的。數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:合理地使用分區(qū)能極大提高查詢效數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用

案例:避免字段太多的大表字段太多的表和JAVA中的大類相似,閱讀困難,更主要的是會影響性能。每次Insert、Update操作針對部分字段,而我們要操作全部字段。案例:避免Blob、Clob字段與其他類型的字段放在一張表中對于EJB的實體bean來說,每次讀寫都要操作這些大字段,很影響性能,并且操作時,加鎖時間也長,影響其他用戶操作。案例:定長字符串應(yīng)該使用char類型字段定長的char類型字段比可變的varchar2有更好的性能數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:避免字段太多的大表數(shù)據(jù)庫優(yōu)化SQL

SQL語句對性能的影響是顯而易見的。案例:使用綁定變量綁定變量可以減少我們相同SQL語句的解析時間,從而提高執(zhí)行效率。但是通過東莞的那次性能診斷,還是看到系統(tǒng)中有不少地方?jīng)]有使用綁定變量。案例:合理的使用索引索引對于在大表中檢索少量數(shù)據(jù),其效率是非常高的。但是很多時候我們對索引的使用不正確而造成效率低下。主要有以下幾個方面:沒有建立索引:數(shù)據(jù)量小的時候無所謂,大了就看到效率低下了;索引使用不上:建了和查詢條件不匹配的索引,根本用不上。要知道,數(shù)據(jù)庫不是有索引就一定會用,而且對于一張表來說,一次查詢只能使用一個索引;索引統(tǒng)計信息沒有更新:還有些情況下,由于索引的統(tǒng)計信息沒有更新,導(dǎo)致數(shù)據(jù)庫選擇不使用索引。這時候就需要更新索引狀態(tài)。Oracle10g以后默認(rèn)自動更新。數(shù)據(jù)庫優(yōu)化SQL案例:使用綁定變量數(shù)據(jù)庫優(yōu)化SQL

SQL語句對性能的影響是顯而易見的。案例:正確的使用臨時表正確的使用臨時表也會大幅提高系統(tǒng)的性能。因為臨時表是和會話綁定的,一個會話一個臨時表,所以它不存在鎖的問題,而且臨時表的數(shù)據(jù)都是在內(nèi)存中。有時候當(dāng)查詢很復(fù)雜的時候,我們可以把查詢分解,把一下中間過程數(shù)據(jù)放到臨時表中,然后對臨時表查詢,這樣會大大提高性能。案例:合理的使用hint

Hint主要用來告訴數(shù)據(jù)庫按照我們設(shè)定的執(zhí)行計劃來抽取數(shù)據(jù)。比如,盡管索引的統(tǒng)計信息沒有更新,我們也可以通過Hint來使用索引。但是如果數(shù)據(jù)量變少了,可能使用索引的效率還不如全表掃描,但是你使用了Hint,它還是會走索引。所以說,Hint是一把雙刃劍,需要謹(jǐn)慎使用。案例:合理的使用視圖的索引視圖使用索引,實際上是使用視圖中原始表的索引。但是如果在視圖定義中對原始表的索引字段定義了別名,則不會用到原始表的索引。這一點(diǎn)要注意。數(shù)據(jù)庫優(yōu)化SQL案例:正確的使用臨時表大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱中間件優(yōu)化目前我司系統(tǒng)使用的中間件主要是Weblogic。中間件優(yōu)化包括內(nèi)存設(shè)置和參數(shù)調(diào)整。中間件優(yōu)化目前我司系統(tǒng)使用的中間件主要是Weblogic中間件優(yōu)化Weblogic建域模式

Weblogic的建域模式分為開發(fā)模式和產(chǎn)品模式,兩者有些參數(shù)的設(shè)置是不同的。案例:Weblogic產(chǎn)品模式提升性能我在進(jìn)行南海EIP測試時,使用產(chǎn)品模式的性能要比開發(fā)模式的性能高。中間件優(yōu)化Weblogic建域模式案例:Weblogic產(chǎn)品中間件優(yōu)化Weblogic集群如果應(yīng)用因為負(fù)載過重而導(dǎo)致性能問題,應(yīng)該考慮集群Weblogic日志級別設(shè)置要適當(dāng)生成日志會影響性能,盡可能少的生成日志有助于提升性能。中間件優(yōu)化Weblogic集群Weblogic日志級別設(shè)置要中間件優(yōu)化Weblogic內(nèi)存設(shè)置

Weblogic的內(nèi)存調(diào)整就是調(diào)整Java虛擬機(jī)的內(nèi)存。32位系統(tǒng)上JVM的可配置的最大內(nèi)存在1.5G左右。64位則不受此限制。通常情況在設(shè)置普通堆的大小時,為了避免擴(kuò)展帶來的性能問題,建議普通堆的最小值和最大值相同。但是一個非常重要的例外是IBM的JVM則要求兩個不能相同,否則會出現(xiàn)垃圾回收方面的性能問題。案例:設(shè)置IBM的JVM普通堆的最小值和最大值不同海南局的EIP是基于IBM的JVM,開始的時候基于以前的習(xí)慣將普通堆的最小值和最大值設(shè)置相同(-Xms4096m–Xmx4096m),后來根據(jù)網(wǎng)上同行的意見設(shè)置為(-Xms1024m–Xmx4096m)。中間件優(yōu)化Weblogic內(nèi)存設(shè)置案例:設(shè)置IBM的JVM普中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整ExecuteQueueandThreadsCount值執(zhí)行隊列可以理解為一個排隊的任務(wù)群。每當(dāng)客戶端發(fā)出一個任務(wù)請求,就會被放到執(zhí)行隊列中。執(zhí)行隊列的線程數(shù)的意思是同時啟動多少個線程來執(zhí)行隊列中的任務(wù)。如果隊列中的任務(wù)數(shù)大于線程數(shù),那就表明有的任務(wù)需要等待。所以線程數(shù)的最大值應(yīng)該和系統(tǒng)的最大并發(fā)數(shù)一致,相應(yīng)的,最小值應(yīng)該和系統(tǒng)的最小并發(fā)量一致。如果是WebLogic9以上版本,線程數(shù)由系統(tǒng)自己分配,無需配置。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整Execut中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整AcceptBacklog值

AcceptBacklog參數(shù)表明Weblogic向操作系統(tǒng)請求的隊列大小??蛻舳诉B接weblogic服務(wù)器時,在服務(wù)器上就監(jiān)聽到一個客戶端的連接請求。但是管理客戶端連接請求的任務(wù)是由操作系統(tǒng)來完成的,而非Weblogic。操作系統(tǒng)把這些連接請求存儲在一個先進(jìn)先出的隊列中。當(dāng)隊列中的連接請求達(dá)到了隊列的最大數(shù)時,Weblogic服務(wù)器所在的主機(jī)操作系統(tǒng)會拒絕新的連接請求。只有當(dāng)隊列中的連接請求和Weblogic成功建立連接后,才會使隊列騰出空位,這時隊列才能繼續(xù)加入新的連接請求。所以,當(dāng)客戶端收到類似connectionrefused的信息,就表明隊列已經(jīng)滿了,這時候可以調(diào)大AcceptBacklog的值。目前在部署的過程中,一般都設(shè)置為100。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整Accept中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JDBC連接數(shù)這里主要是指JDBC連接池中的連接數(shù)。當(dāng)操作數(shù)據(jù)庫的事務(wù)并發(fā)量很大時,需要調(diào)大JDBC連接數(shù)的最大值,否則會報得不到JDBC連接的問題。一般最大值的設(shè)置不應(yīng)該超過執(zhí)行隊列中線程最大值的設(shè)置,更不要超過數(shù)據(jù)庫中的Processes值。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JDBC連中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JTA的事務(wù)超時時間

JTA就是Java事務(wù)管理接口,主要用來管理EJB的事務(wù)。我們通常關(guān)注的就是事務(wù)的超時時間。因為有些事務(wù)比較大,如果超時時間設(shè)置過短,會造成事務(wù)處理失敗并回滾。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JTA的事中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:使用NativeIO服務(wù)器啟動,接受到連接請求并建立好連接以后,監(jiān)聽線程將處理權(quán)交給Socket復(fù)用器,放置到執(zhí)行隊列中。當(dāng)有一個請求進(jìn)入執(zhí)行隊列,就會有一個空閑的執(zhí)行線程從該隊列里面取走并向調(diào)用者返回結(jié)果。Weblogic帶有兩個版本的Socket復(fù)用器,純Java版和本地接口版(JNI)。訪問量?。篔ava版性能要好一些。JNI的API調(diào)用會損失一部分性能。訪問量大:JNI版的性能比較好,所以盡量保證Weblogic使用本地接口版的Socket復(fù)用器。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:使用NativeI大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱應(yīng)用優(yōu)化EJB、大數(shù)據(jù)量讀、DAO中的SQL語句、常用數(shù)據(jù)的緩存、特定結(jié)構(gòu)、Java代碼編寫、JSP編寫應(yīng)用優(yōu)化EJB、大數(shù)據(jù)量讀、DAO中的SQL語句、常用數(shù)據(jù)的應(yīng)用優(yōu)化EJB優(yōu)化案例:使用容器管理的持久性CMP使用CMP不僅可以減少代碼的編寫量,而且可以允許容器進(jìn)行很多優(yōu)化,包括數(shù)據(jù)庫訪問代碼的優(yōu)化。案例:遵循粗粒度設(shè)計原則

由于調(diào)用EJB的方法都屬于遠(yuǎn)程調(diào)用,對于大多數(shù)細(xì)粒度的對象來說調(diào)用中間件的開銷大得簡直讓人無法承受。案例:減少JNDI的查找次數(shù)由于各種應(yīng)用服務(wù)器的命名和目錄服務(wù)在具體實現(xiàn)方法上的差異,JNDI的查找過程比較費(fèi)時。JNDI對EJB資源,如:數(shù)據(jù)源、bean引用,乃至環(huán)境項的查找可能花費(fèi)巨大,且避免重復(fù)查找并非易事。在這種情況下可以利用緩存home的方法來提升性能。應(yīng)用優(yōu)化EJB優(yōu)化案例:使用容器管理的持久性CMP應(yīng)用優(yōu)化DAO中的SQL語句案例:三層嵌套的分頁查詢SQL語句更高效每次只需要一頁數(shù)據(jù),所以從數(shù)據(jù)庫中也只需要查詢一頁的數(shù)據(jù),特別是對于大數(shù)據(jù)量的表。原來把所有數(shù)據(jù)全取得后,再顯示一頁數(shù)據(jù)的性能較低。應(yīng)用優(yōu)化DAO中的SQL語句案例:三層嵌套的分頁查詢SQL語應(yīng)用優(yōu)化DAO與EJB案例:對只讀數(shù)據(jù)采用DAO直接讀取通過DAO直接訪問那些更新不是很頻繁的數(shù)據(jù),從而避免了使用EJB所帶來的負(fù)擔(dān),加快數(shù)據(jù)的訪問。特別是取多條記錄時,使用DAO讀取更快并且消耗資源少。應(yīng)用優(yōu)化DAO與EJB案例:對只讀數(shù)據(jù)采用DAO直接讀取應(yīng)用優(yōu)化緩存案例:加入緩存機(jī)制,可極大的減少字典表和常用表的訪問次數(shù)字典表、查詢字段對應(yīng)表、用戶表、部門表、角色表都是訪問頻率很高的表。加入緩存,減少訪問次數(shù)。

應(yīng)用優(yōu)化緩存案例:加入緩存機(jī)制,可極大的減少字典表和常用表的應(yīng)用優(yōu)化特定操作的結(jié)構(gòu)優(yōu)化案例:審批操作時要關(guān)聯(lián)對象授權(quán)和工作流表三張或更多張表的關(guān)聯(lián),性能下除的很快。對于特定操作的結(jié)構(gòu)優(yōu)化,可加速局部的響應(yīng)速度。工作流表:可分成將要處理數(shù)據(jù)和歷史數(shù)據(jù);對象授權(quán)表:可改進(jìn)授權(quán)表的權(quán)限字段結(jié)構(gòu),使關(guān)聯(lián)速度更快。應(yīng)用優(yōu)化特定操作的結(jié)構(gòu)優(yōu)化案例:審批操作時要關(guān)聯(lián)對象授權(quán)和工應(yīng)用優(yōu)化JAVA編碼使用緊湊字節(jié)碼的解釋性語言。速度通常是Java應(yīng)用的最大問題,編碼技術(shù)影響了Java應(yīng)用的性能。避免創(chuàng)建不必要的對象大量對象的創(chuàng)建仍然會占用系統(tǒng)的資源。避免應(yīng)用同步系統(tǒng)要實現(xiàn)同步就必須序列化所有當(dāng)前正在執(zhí)行的線程,這將會降低系統(tǒng)的可伸縮性,并且設(shè)置同步也需要耗費(fèi)JVM的大量的資源。因此應(yīng)該盡量避免應(yīng)用同步,僅僅在必須用到它們的時候才應(yīng)用。一些容器類使用時要注意初始化空間大小如:StringBuffer、ArrayList、HashMap。合理的初始化空間,避免擴(kuò)展空間時的性能消耗。應(yīng)用優(yōu)化JAVA編碼避免創(chuàng)建不必要的對象應(yīng)用優(yōu)化JAVA編碼使用靜態(tài)檢查插件檢查性能問題靜態(tài)檢查插件可以檢查出一些性能不好的語句。如:tptp-analysis、PMD、findbugs、checkStyle。這些插件還能檢查出一些邏輯錯誤和不好的格式問題。改進(jìn)局部消耗時間長的代碼算法可以根據(jù)性能測試結(jié)果,找出消耗時間長的代碼片段,集中優(yōu)勢力量對其改進(jìn)。改變局部高耗模塊的功能對于很大數(shù)據(jù)量的列表頁面,可以去除一些小功能,如:題頭排序功能等。應(yīng)用優(yōu)化JAVA編碼使用靜態(tài)檢查插件檢查性能問題應(yīng)用優(yōu)化JSP優(yōu)化案例:選擇合適的include最好將頁眉、頁腳和導(dǎo)航條內(nèi)容存儲在單個文件中,并且不要重新動態(tài)產(chǎn)生它們。合理使用自定義標(biāo)簽庫

jsp自定義的標(biāo)簽庫可以封裝大量的、復(fù)雜的操作,有效地實現(xiàn)Java程序員和Web設(shè)計人員工作的劃分。然而,在頁面上應(yīng)用的每一個標(biāo)簽,Web容器都必須創(chuàng)建一個新的標(biāo)簽句柄對象或從標(biāo)簽緩沖中提取它。因此,過多的使用標(biāo)簽將會帶來不必要的浪費(fèi)。應(yīng)用優(yōu)化JSP優(yōu)化案例:選擇合適的include結(jié)束結(jié)束性能問題探討2009年9月性能問題探討2009年9月架構(gòu)我們的系統(tǒng)部署方式雖然多種多樣的,但是從整個系統(tǒng)架構(gòu)來說,不外乎左邊圖所示的結(jié)構(gòu)。架構(gòu)我們的系統(tǒng)部署方式雖然多種多樣的,但是從整個系統(tǒng)大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱操作系統(tǒng)優(yōu)化目前我公司應(yīng)用系統(tǒng)部署到的操作系統(tǒng)有:AIX、HP-UX、Solaris、Linux、Windows2003。操作系統(tǒng)引起問題的地方主要有兩個方面:內(nèi)核問題和資源問題。操作系統(tǒng)優(yōu)化目前我公司應(yīng)用系統(tǒng)部署到的操作系統(tǒng)有:AIX操作系統(tǒng)優(yōu)化內(nèi)核問題內(nèi)核問題主要是內(nèi)核參數(shù)的設(shè)置方面。這個參數(shù)主要是分為兩部分:內(nèi)存相關(guān)的和網(wǎng)絡(luò)相關(guān)的。比如:我們在安裝Oracle時未按照官方說明,修改內(nèi)存相關(guān)的內(nèi)核參數(shù),就會導(dǎo)致無法使用大的共享內(nèi)存塊。再比如,一些網(wǎng)絡(luò)參數(shù)會影響weblogic的吞吐量。案例:適當(dāng)調(diào)整udp_sendspace值網(wǎng)絡(luò)參數(shù)udp_sendspace是UDP的發(fā)送緩存,默認(rèn)值為8K,為減少I/O異常,需調(diào)整為32k。操作系統(tǒng)優(yōu)化內(nèi)核問題案例:適當(dāng)調(diào)整udp_sendspace操作系統(tǒng)優(yōu)化案例:適錄調(diào)整nofiles值在東莞和南海都遇到了以下錯誤:<BEA-002616><Failedtolistenonchannel"Default"on05:7001,failurecount:10,failingfor45seconds,.SocketException:Toomanyopenfiles>這個錯誤主要就是因為應(yīng)用系統(tǒng)打開了太多的文件句柄。因為在Unix下,默認(rèn)一個用戶只能打開2000個文件句柄。一旦出現(xiàn)這個錯誤,weblogic將無法對外提供響應(yīng)。這個可以通過增加資源限制中的nofiles的值來解決。資源問題

Unix和Linux對每一個用戶都有一個資源限制。這些限制可能包括能創(chuàng)建的文件大小、能同時打開的文件數(shù)量、能同時啟動的進(jìn)程數(shù)、能使用的最大內(nèi)存等。UNIX環(huán)境中可以使用ulimit查看。操作系統(tǒng)優(yōu)化案例:適錄調(diào)整nofiles值資源問題大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)的問題主要是兩個方面:響應(yīng)時間和吞吐量。網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)的問題主要是兩個方面:響應(yīng)時間和吞吐量。網(wǎng)絡(luò)優(yōu)化響應(yīng)時間這里的響應(yīng)時間主要是查找和連接網(wǎng)絡(luò)的時間。響應(yīng)時間過長的常見原因是DNS的解析造成的。案例:DNS解析造成服務(wù)啟動慢海南EIP在項目實施中,遇到服務(wù)啟動很慢的問題,一個服務(wù)的啟動時間需要20多分鐘。后來發(fā)現(xiàn)系統(tǒng)走了DNS解析,沒有走本地解析。修改為本地解析后,啟動時間縮短為4分鐘左右。網(wǎng)絡(luò)優(yōu)化響應(yīng)時間案例:DNS解析造成服務(wù)啟動慢網(wǎng)絡(luò)優(yōu)化吞吐量吞吐量主要是指網(wǎng)絡(luò)的傳輸速度。這里只討論網(wǎng)絡(luò)設(shè)備的設(shè)置問題。案例:交換機(jī)傳輸模式影響網(wǎng)速由于惠州供電局交換機(jī)傳輸模式是“半雙工自適應(yīng)”,造成網(wǎng)速很慢,表現(xiàn)為我們的系統(tǒng)響應(yīng)很慢,后改成“全雙工”模式,系統(tǒng)響應(yīng)速度明顯提高,輸電部、計量部、變電部登錄系統(tǒng)時間,及不同設(shè)備界面切換時間響應(yīng)在2秒以內(nèi)。網(wǎng)絡(luò)優(yōu)化吞吐量案例:交換機(jī)傳輸模式影響網(wǎng)速大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱數(shù)據(jù)庫優(yōu)化目前我公司系統(tǒng)使用的數(shù)據(jù)庫主要是Oracle。Oracle優(yōu)化主要從5個方面來考慮:軟件版本、內(nèi)存、CPU、IO、數(shù)據(jù)庫對象爭用和SQL。數(shù)據(jù)庫優(yōu)化目前我公司系統(tǒng)使用的數(shù)據(jù)庫主要是Oracle。數(shù)據(jù)庫優(yōu)化軟件版本軟件版本可以從兩個方面考慮,與操作系統(tǒng)響應(yīng)的版本、與版本相關(guān)的補(bǔ)丁。如果版本與操作系統(tǒng)不一致,即便能跑起來,也會產(chǎn)生系統(tǒng)問題。另外,有些版本本身有bug,這些bug可能會造成性能問題,所以需要打上補(bǔ)丁。一般2.4以上的版本被視為穩(wěn)定版本。案例:64位機(jī)器上安裝32位oracle的性能問題惠州供電局原來的數(shù)據(jù)庫服務(wù)器cpu是64位,但是為了圖方便,安裝了32位windows2003和32位的oracle10g,造成只能使用1.7g左右的內(nèi)存,對于8g內(nèi)存的機(jī)器來說,很浪費(fèi)。后來按照oracle給出的擴(kuò)大內(nèi)存的方法進(jìn)行調(diào)整,依然無效。原因就是該機(jī)器cpu是64位的。后來改裝64位windows2003和64位oracle10g,性能提高了幾倍。數(shù)據(jù)庫優(yōu)化軟件版本案例:64位機(jī)器上安裝32位oracle的數(shù)據(jù)庫優(yōu)化內(nèi)存優(yōu)化一般Oracle建議將操作系統(tǒng)物理內(nèi)存的70%分配給它。比如,物理內(nèi)存是8G,則分配給Oracle的內(nèi)存就是5.6G。Oracle的內(nèi)存主要分兩塊:SGA和PGA。按照70%的物理內(nèi)存來劃分,則是:SGA為60%,PGA為10%。案例:內(nèi)存設(shè)置太小造成性能問題有人反映,他的系統(tǒng)很慢,感覺主要是數(shù)據(jù)庫慢。連上去看他的數(shù)據(jù)庫,發(fā)現(xiàn)SGA只有300M,PGA只有幾十M。按照70%的比例進(jìn)行調(diào)整后,發(fā)現(xiàn)數(shù)據(jù)庫性能明顯提高,相應(yīng)的系統(tǒng)吞吐量也大幅提高。數(shù)據(jù)庫優(yōu)化內(nèi)存優(yōu)化案例:內(nèi)存設(shè)置太小造成性能問題數(shù)據(jù)庫優(yōu)化CPU優(yōu)化這里把Oracle中的Processes歸為CPU方面,其實也不準(zhǔn)確。主要是考慮到它們和CPU的利用率有關(guān)。

Processes參數(shù)表明允許同時運(yùn)行的最大服務(wù)器進(jìn)程數(shù)。在獨(dú)占式連接模式下,一個

Session就啟動一個Process,你也可以認(rèn)為建立一個JDBC連接就啟動一個Process。案例:Processes設(shè)置太小造成性能問題如果Weblogic中JDBC連接池需要建立的連接數(shù)大于Processes的值時,則會出現(xiàn)連接失敗而等待。這時候增大Processes的值就會消除這種等待而提高性能。數(shù)據(jù)庫優(yōu)化CPU優(yōu)化案例:Processes設(shè)置太小造成性能數(shù)據(jù)庫優(yōu)化IO

IO主要是兩個方面:每個用戶使用自己單獨(dú)的臨時表空間、盡量關(guān)閉數(shù)據(jù)表空間的自動擴(kuò)展功能。案例:每個用戶使用自己單獨(dú)的臨時表空間如果沒有給用戶設(shè)置單獨(dú)的臨時表空間,那么用戶就會使用系統(tǒng)臨時表空間,從而引起資源競爭。上次東莞供電局邀請第三方做性能診斷時,看到我們的用戶沒有建立單獨(dú)的臨時表空間。對于這種常識性的錯誤,被別人揪出來會讓人懷疑我們的專業(yè)性的。案例:盡量關(guān)閉數(shù)據(jù)表空間的自動擴(kuò)展功能在建表空間時就應(yīng)該估算到表空間的大小,至少是未來一段時間的空間大小。而不要使用自動擴(kuò)展,因為自動擴(kuò)展在實時系統(tǒng)上也是很影響性能的。數(shù)據(jù)庫優(yōu)化IO案例:每個用戶使用自己單獨(dú)的臨時表空間數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用數(shù)據(jù)庫對象的爭用,主要是指表、索引、序列等的爭用。爭用這個意思也很好理解,一個對象被引用的多了自然就存在爭用,爭用就會產(chǎn)生等待,等待就會影響性能。案例:表被關(guān)聯(lián)的外鍵太多如果表被關(guān)聯(lián)的外健太多,當(dāng)多個關(guān)聯(lián)表同時發(fā)生數(shù)據(jù)變更時,就可能產(chǎn)生等待。所以在設(shè)計上,是不是非要堅持范式設(shè)計,也是需要我們自己取舍一下。案例:表上的索引太多如果表上的索引很多,那么在更新表的數(shù)據(jù)時,這些索引都需要被更新。所以對于沒有使用過的索引可以刪除??梢酝ㄟ^dba_indexes視圖來查詢哪些索引沒有使用過。數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:表被關(guān)聯(lián)的外鍵太多數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用

案例:實時表的數(shù)據(jù)太多原則上來說,實時表的數(shù)據(jù)應(yīng)該保持在一個比較小的規(guī)模。隨著數(shù)據(jù)的增長,應(yīng)該考慮歷史表和實時表并存。但是很多時候,我們?yōu)榱瞬樵兊姆奖?,所有?shù)據(jù)保存在一個表中。造成效率的低下。這種情況下,可以采取的措施有:

分表:根據(jù)時間(比如:年、月或日為單位),把歷史數(shù)據(jù)分成多個表;

分區(qū):根據(jù)時間或其他條件字段,對該表分區(qū);

綁定到內(nèi)存:將整個表綁定到內(nèi)存,對數(shù)據(jù)的檢索會有一定的提高,但是對于內(nèi)存要求太高。數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:實時表的數(shù)據(jù)太多數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用

案例:合理地使用分區(qū)能極大提高查詢效率深圳供電局生產(chǎn)系統(tǒng)中的缺陷模塊,有一個視圖生產(chǎn)系統(tǒng)中的缺陷模塊,有一個視圖V_DEFECT_FLOWCONTROL,這個查詢主要是針對流程跟蹤表WFT_FLOWCONTROL進(jìn)行查詢的。測試時,該表約有195萬條記錄,缺陷的記錄約有17萬條。在對流程跟蹤表WFT_FLOWCONTROL建立分區(qū)前,這個視圖的查詢時間為13.29秒;對流程跟蹤表的缺陷的數(shù)據(jù)建立分區(qū)后,查詢時間為02.43秒,查詢效率提高了約5.5倍。將缺陷的數(shù)據(jù)導(dǎo)入另外一個表,對該表建立相同的視圖進(jìn)行查詢,時間為02.26秒。對比可知,建立合適的分區(qū)與分表的效率是比較接近的。數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:合理地使用分區(qū)能極大提高查詢效數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用

案例:避免字段太多的大表字段太多的表和JAVA中的大類相似,閱讀困難,更主要的是會影響性能。每次Insert、Update操作針對部分字段,而我們要操作全部字段。案例:避免Blob、Clob字段與其他類型的字段放在一張表中對于EJB的實體bean來說,每次讀寫都要操作這些大字段,很影響性能,并且操作時,加鎖時間也長,影響其他用戶操作。案例:定長字符串應(yīng)該使用char類型字段定長的char類型字段比可變的varchar2有更好的性能數(shù)據(jù)庫優(yōu)化數(shù)據(jù)庫對象爭用案例:避免字段太多的大表數(shù)據(jù)庫優(yōu)化SQL

SQL語句對性能的影響是顯而易見的。案例:使用綁定變量綁定變量可以減少我們相同SQL語句的解析時間,從而提高執(zhí)行效率。但是通過東莞的那次性能診斷,還是看到系統(tǒng)中有不少地方?jīng)]有使用綁定變量。案例:合理的使用索引索引對于在大表中檢索少量數(shù)據(jù),其效率是非常高的。但是很多時候我們對索引的使用不正確而造成效率低下。主要有以下幾個方面:沒有建立索引:數(shù)據(jù)量小的時候無所謂,大了就看到效率低下了;索引使用不上:建了和查詢條件不匹配的索引,根本用不上。要知道,數(shù)據(jù)庫不是有索引就一定會用,而且對于一張表來說,一次查詢只能使用一個索引;索引統(tǒng)計信息沒有更新:還有些情況下,由于索引的統(tǒng)計信息沒有更新,導(dǎo)致數(shù)據(jù)庫選擇不使用索引。這時候就需要更新索引狀態(tài)。Oracle10g以后默認(rèn)自動更新。數(shù)據(jù)庫優(yōu)化SQL案例:使用綁定變量數(shù)據(jù)庫優(yōu)化SQL

SQL語句對性能的影響是顯而易見的。案例:正確的使用臨時表正確的使用臨時表也會大幅提高系統(tǒng)的性能。因為臨時表是和會話綁定的,一個會話一個臨時表,所以它不存在鎖的問題,而且臨時表的數(shù)據(jù)都是在內(nèi)存中。有時候當(dāng)查詢很復(fù)雜的時候,我們可以把查詢分解,把一下中間過程數(shù)據(jù)放到臨時表中,然后對臨時表查詢,這樣會大大提高性能。案例:合理的使用hint

Hint主要用來告訴數(shù)據(jù)庫按照我們設(shè)定的執(zhí)行計劃來抽取數(shù)據(jù)。比如,盡管索引的統(tǒng)計信息沒有更新,我們也可以通過Hint來使用索引。但是如果數(shù)據(jù)量變少了,可能使用索引的效率還不如全表掃描,但是你使用了Hint,它還是會走索引。所以說,Hint是一把雙刃劍,需要謹(jǐn)慎使用。案例:合理的使用視圖的索引視圖使用索引,實際上是使用視圖中原始表的索引。但是如果在視圖定義中對原始表的索引字段定義了別名,則不會用到原始表的索引。這一點(diǎn)要注意。數(shù)據(jù)庫優(yōu)化SQL案例:正確的使用臨時表大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)化數(shù)據(jù)庫優(yōu)化中間件優(yōu)化應(yīng)用優(yōu)化大綱中間件優(yōu)化目前我司系統(tǒng)使用的中間件主要是Weblogic。中間件優(yōu)化包括內(nèi)存設(shè)置和參數(shù)調(diào)整。中間件優(yōu)化目前我司系統(tǒng)使用的中間件主要是Weblogic中間件優(yōu)化Weblogic建域模式

Weblogic的建域模式分為開發(fā)模式和產(chǎn)品模式,兩者有些參數(shù)的設(shè)置是不同的。案例:Weblogic產(chǎn)品模式提升性能我在進(jìn)行南海EIP測試時,使用產(chǎn)品模式的性能要比開發(fā)模式的性能高。中間件優(yōu)化Weblogic建域模式案例:Weblogic產(chǎn)品中間件優(yōu)化Weblogic集群如果應(yīng)用因為負(fù)載過重而導(dǎo)致性能問題,應(yīng)該考慮集群Weblogic日志級別設(shè)置要適當(dāng)生成日志會影響性能,盡可能少的生成日志有助于提升性能。中間件優(yōu)化Weblogic集群Weblogic日志級別設(shè)置要中間件優(yōu)化Weblogic內(nèi)存設(shè)置

Weblogic的內(nèi)存調(diào)整就是調(diào)整Java虛擬機(jī)的內(nèi)存。32位系統(tǒng)上JVM的可配置的最大內(nèi)存在1.5G左右。64位則不受此限制。通常情況在設(shè)置普通堆的大小時,為了避免擴(kuò)展帶來的性能問題,建議普通堆的最小值和最大值相同。但是一個非常重要的例外是IBM的JVM則要求兩個不能相同,否則會出現(xiàn)垃圾回收方面的性能問題。案例:設(shè)置IBM的JVM普通堆的最小值和最大值不同海南局的EIP是基于IBM的JVM,開始的時候基于以前的習(xí)慣將普通堆的最小值和最大值設(shè)置相同(-Xms4096m–Xmx4096m),后來根據(jù)網(wǎng)上同行的意見設(shè)置為(-Xms1024m–Xmx4096m)。中間件優(yōu)化Weblogic內(nèi)存設(shè)置案例:設(shè)置IBM的JVM普中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整ExecuteQueueandThreadsCount值執(zhí)行隊列可以理解為一個排隊的任務(wù)群。每當(dāng)客戶端發(fā)出一個任務(wù)請求,就會被放到執(zhí)行隊列中。執(zhí)行隊列的線程數(shù)的意思是同時啟動多少個線程來執(zhí)行隊列中的任務(wù)。如果隊列中的任務(wù)數(shù)大于線程數(shù),那就表明有的任務(wù)需要等待。所以線程數(shù)的最大值應(yīng)該和系統(tǒng)的最大并發(fā)數(shù)一致,相應(yīng)的,最小值應(yīng)該和系統(tǒng)的最小并發(fā)量一致。如果是WebLogic9以上版本,線程數(shù)由系統(tǒng)自己分配,無需配置。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整Execut中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整AcceptBacklog值

AcceptBacklog參數(shù)表明Weblogic向操作系統(tǒng)請求的隊列大小??蛻舳诉B接weblogic服務(wù)器時,在服務(wù)器上就監(jiān)聽到一個客戶端的連接請求。但是管理客戶端連接請求的任務(wù)是由操作系統(tǒng)來完成的,而非Weblogic。操作系統(tǒng)把這些連接請求存儲在一個先進(jìn)先出的隊列中。當(dāng)隊列中的連接請求達(dá)到了隊列的最大數(shù)時,Weblogic服務(wù)器所在的主機(jī)操作系統(tǒng)會拒絕新的連接請求。只有當(dāng)隊列中的連接請求和Weblogic成功建立連接后,才會使隊列騰出空位,這時隊列才能繼續(xù)加入新的連接請求。所以,當(dāng)客戶端收到類似connectionrefused的信息,就表明隊列已經(jīng)滿了,這時候可以調(diào)大AcceptBacklog的值。目前在部署的過程中,一般都設(shè)置為100。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理調(diào)整Accept中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JDBC連接數(shù)這里主要是指JDBC連接池中的連接數(shù)。當(dāng)操作數(shù)據(jù)庫的事務(wù)并發(fā)量很大時,需要調(diào)大JDBC連接數(shù)的最大值,否則會報得不到JDBC連接的問題。一般最大值的設(shè)置不應(yīng)該超過執(zhí)行隊列中線程最大值的設(shè)置,更不要超過數(shù)據(jù)庫中的Processes值。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JDBC連中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JTA的事務(wù)超時時間

JTA就是Java事務(wù)管理接口,主要用來管理EJB的事務(wù)。我們通常關(guān)注的就是事務(wù)的超時時間。因為有些事務(wù)比較大,如果超時時間設(shè)置過短,會造成事務(wù)處理失敗并回滾。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:合理的調(diào)整JTA的事中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:使用NativeIO服務(wù)器啟動,接受到連接請求并建立好連接以后,監(jiān)聽線程將處理權(quán)交給Socket復(fù)用器,放置到執(zhí)行隊列中。當(dāng)有一個請求進(jìn)入執(zhí)行隊列,就會有一個空閑的執(zhí)行線程從該隊列里面取走并向調(diào)用者返回結(jié)果。Weblogic帶有兩個版本的Socket復(fù)用器,純Java版和本地接口版(JNI)。訪問量?。篔ava版性能要好一些。JNI的API調(diào)用會損失一部分性能。訪問量大:JNI版的性能比較好,所以盡量保證Weblogic使用本地接口版的Socket復(fù)用器。中間件優(yōu)化Weblogic參數(shù)調(diào)整案例:使用NativeI大綱操作系統(tǒng)優(yōu)化網(wǎng)絡(luò)優(yōu)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論