新聞資訊

關于Java EE性能(néng)幾點問(wèn)題

1. Java EE 中間(jiān)件(jiàn)環境規範不(bù)足


“沒有(yǒu)規矩,不(bù)成方圓”。第二個(gè)比較普遍的(de)原因是(shì) Java EE 中間(jiān)件(jiàn)或者基礎架構不(bù)規範 。在項目初始,新平台上(shàng)面沒有(yǒu)制(zhì)定合理(lǐ)的(de)規範,導緻系統穩定 性差。這(zhè)會(huì)增加客戶成本,所以花(huā)時(shí)間(jiān)去(qù)制(zhì)∏定合理(lǐ)的(de) Java EE 中間(jiān)件(jiàn)環境規範是(shì)必須的(de)。這(zhè)項工(gōng)作(zuò)應與初始容量規劃叠代相(xiàn×g)結合。



2. Java 虛拟機(jī)垃圾回收過度由于 JVM 的(de)內(nèi)存空(kōng)間(jiān)過度消耗(Java 堆、本機(jī)堆等)而抛出的(de)異常。


垃圾收集問(wèn)題并不(bù)一(yī)定會(huì)表現(xiàn)為(wèi)一(yī)個(gè) OOM 條件(jiàn),過度的(♠de)垃圾收集可(kě)以理(lǐ)解成是(shì) JVM GC 線程在短(duǎn)時(shí)間(jiān)裡(lǐ)進行(xíng)輕微(wēi)或超量收 集集合數(shù)據而導緻的(de) JVM 暫停時(shí)間(jiān)很(hěn)長(cháng)和(hé)↔性能(néng)下(xià)降。可(kě)能(néng)有(yǒu)以下(xià)幾個(gè)原因:與 JVM 的(de)負載≠量和(hé)應用(yòng)程序內(nèi)存占用(yòng)量相(xiàng)比,Java 堆可(kě)能(néng)選擇的(de)太小(xiǎ✔o)。JVM GC 策略使用(yòng)不(bù)合理(lǐ)。應用(yòng)程序靜(jìng)态或動态內(n$èi)存占用(yòng)量太大(dà),不(bù)适合在 32 位 JVM 上(shàng)使用(yòng)。JVM OldGen 随著(zhe)時(shí)間(jiān)推移,洩漏越來(lái)¥越嚴重,而 GC 在幾個(gè)小(xiǎo)時(shí)或者幾天後才發現(xiàn)。JVM Per¥mGen 空(kōng)間(jiān)(隻有(yǒu) HotSpot VM)或本機(jī)堆随著(zhe)時(shí)間(jiān)推移會(huì)洩露是(shì)一(yī)φ個(gè)非常普遍的(de)問(wèn)題;OOM 的(de)錯(cuò)誤往往是(shì)觀察一(yī)段時(shí)間(jiān)↕後,應用(yòng)程序進行(xíng)動态調動。建議(yì):觀察和(hé)深入理(lǐ)解 JVM 垃圾回收。啓動 GC,根據健康合理(lǐ)的(de)評估來(lái)提供所有(¶yǒu)的(de)數(shù)據。記住,GC 方面的(de)相(xiàng)關問(wèn)題不(bù)會(huì)在開(kāi)發中或者功能(néng)測試&時(shí)發現(xiàn),它需要(yào)在多(duō)用(yòng)戶高(gāo)負載的(de)測試環境下(xià)發現(xiàn)。



3. 與外(wài)部系統集成過多(duō)或過少(shǎo)

     

導緻 Java EE 性能(néng)差的(de)第四個(gè)原因是(shì)高(gāo)分(fēn)布式系統,典型案例是(shì)電(diàn)信 IT 環境。在®這(zhè)個(gè)環境中,一(yī)個(gè)中間(jiān)件(jiàn)領域(例如(rú),服務總線)很(hěn)少(shǎo)會(huì)做(zuò)所有(yǒu)的(de)工(÷gōng)作(zuò),而僅僅是(shì)把一(yī)些(xiē)業(yè)務“委托”給其他(tā)部分(fēn),例如(rú)産品質量,客戶資料和(hé)訂單管理(lǐ), ​到(dào)其他(tā) Java EE 中間(jiān)件(jiàn)平台或遺留系統中,如(rú)支持各種不(bù)同的(de)負載類型和(hé)通(tōng)信協議(yì)的♣(de)大(dà)型機(jī)。    這(zhè)樣的(de)外(wài)部系統調用(yòng)意味著(zhe)客戶端的(de) J✔ava EE 應用(yòng)程序觸發創建或重用(yòng)套接字鏈接從(cóng)外(wài)部系統中讀(dú)寫數(shù)據。合肥網站(zhàn)建設公司根據業(yè)務流程的(de↑)實施和(hé)實現(xiàn)可(kě)以配置成同步調用(yòng)或異步調用(yòng)。需要(yào)注意的(de)是(shì),響應時(shí)間(jiān)會(huì)根據外(wà'i)部系統 的(de)穩定狀況進行(xíng)改變,所以通(tōng)過适當的(de)使用(yòng)超時(shí)↑來(lái)保護 Java EE 應用(yòng)程序和(hé)中間(jiān)件(jiàn)也(yě)是(shì)非常重要(yào)的(de)。



4. 特定應用(yòng)程序性能(néng)問(wèn)題下(xià)面關注的(de)是(shì)比€較嚴重的(de) Java EE 應用(yòng)程序問(wèn)題。


關于特定應用(yòng)程序性能(néng)問(wèn)題,總結了(le)以下(xià)幾個(gè)點:

1.線程安全的(de)代碼問(wèn)題

2.通(tōng)信 API 缺少(shǎo)超時(shí)設置

3.JDBC 或者關系型 API 資源管理(lǐ)問(wèn)題

4.缺乏适當的(de)數(shù)據緩存

5.數(shù)據緩存過度過多(duō)的(de)日(rì)志(zhì)記錄。

 

希望本文(wén)能(néng)夠幫助您理(lǐ)解一(yī)些(xiē)常見(jiàn)的(de)性能(néng)問(wèn)題和(hé)壓力點,