新聞資訊

關于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àng)結合。✔σ



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


垃圾收集問(wèn)題并不(bù)一(yī)定會(huì)表現(xδ↑¥≤iàn)為(wèi)一(yī)個(gè) OOM 條件(jiàn),過度的(d​♦π&e)垃圾收集可(kě)以理(lǐ)解成是(shì) JVM GC 線程在短(d©∏π‌uǎn)時(shí)間(jiān)裡(lǐ)進行(xín¶↓g)輕微(wēi)或超量收集集合數(shù)據而導緻的(de) Jπ ₩VM 暫停時(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 随著(zhσλe)時(shí)間(jiān)推移,洩漏越來(lái)越嚴✔↓重,而 GC 在幾個(gè)小(xiǎo)時(shí)或者幾天後才發現(x✔β←$iàn)。JVM PermGen 空(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)少(s>γ₽hǎ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)件(j≈∏iàn)平台或遺留系統中,如(rú)支持各種不(bù)β¶¶同的(de)負載類型和(hé)通(tōng)信協議(yì)的(de✘&↕§)大(dà)型機(jī)。    這(zhè)樣的☆☆β§(de)外(wài)部系統調用(yòng)意味著✘✔∞(zhe)客戶端的(de) Java 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)是(s×↓φhì),響應時(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é)壓力點,