關于(yú)Java EE性能幾點問題
1. Java EE 中間件環境規範不(bù)足
“沒有規矩,不(bù)成方圓”。第二個(gè)比較普遍的(de)原因是(shì) Java EE 中間件或者基礎架構不(bù)規範。在(zài)項目初始,新平台上(shàng)面沒有制定合理的(de)規範,導緻系統穩定性差。這(zhè)會增加客戶成本,所以(yǐ)花時(shí)間去制定合理的(de) Java EE 中間件環境規範是(shì)必須的(de)。這(zhè)項工作應與初始容量規劃叠代相結合。
2. Java 虛拟機垃圾回收過度由于(yú) JVM 的(de)内存空間過度消耗(Java 堆、本機堆等)而(ér)抛出(chū)的(de)異常。
垃圾收集問題并不(bù)一(yī / yì /yí)定會表現爲(wéi / wèi)一(yī / yì /yí)個(gè) OOM 條件,過度的(de)垃圾收集可以(yǐ)理解成是(shì) JVM GC 線程在(zài)短時(shí)間裏進行輕微或超量收集集合數據而(ér)導緻的(de) JVM 暫停時(shí)間很長和(hé / huò)性能下降。可能有以(yǐ)下幾個(gè)原因:與 JVM 的(de)負載量和(hé / huò)應用程序内存占用量相比,Java 堆可能選擇的(de)太小。JVM GC 策略使用不(bù)合理。應用程序靜态或動态内存占用量太大(dà),不(bù)适合在(zài) 32 位 JVM 上(shàng)使用。JVM OldGen 随着時(shí)間推移,洩漏越來(lái)越嚴重,而(ér) GC 在(zài)幾個(gè)小時(shí)或者幾天後才發現。JVM PermGen 空間(隻有 HotSpot VM)或本機堆随着時(shí)間推移會洩露是(shì)一(yī / yì /yí)個(gè)非常普遍的(de)問題;OOM 的(de)錯誤往往是(shì)觀察一(yī / yì /yí)段時(shí)間後,應用程序進行動态調動。建議:觀察和(hé / huò)深入理解 JVM 垃圾回收。啓動 GC,根據健康合理的(de)評估來(lái)提供所有的(de)數據。記住,GC 方面的(de)相關問題不(bù)會在(zài)開發中或者功能測試時(shí)發現,它需要(yào / yāo)在(zài)多用戶高負載的(de)測試環境下發現。
3. 與外部系統集成過多或過少
導緻 Java EE 性能差的(de)第四個(gè)原因是(shì)高分布式系統,典型案例是(shì)電信 IT 環境。在(zài)這(zhè)個(gè)環境中,一(yī / yì /yí)個(gè)中間件領域(例如,服務總線)很少會做所有的(de)工作,而(ér)僅僅是(shì)把一(yī / yì /yí)些業務“委托”給其他(tā)部分,例如産品質量,客戶資料和(hé / huò)訂單管理, 到(dào)其他(tā) Java EE 中間件平台或遺留系統中,如支持各種不(bù)同的(de)負載類型和(hé / huò)通信協議的(de)大(dà)型機。 這(zhè)樣的(de)外部系統調用意味着客戶端的(de) Java EE 應用程序觸發創建或重用套接字鏈接從外部系統中讀寫數據。合肥網站建設公司根據業務流程的(de)實施和(hé / huò)實現可以(yǐ)配置成同步調用或異步調用。需要(yào / yāo)注意的(de)是(shì),響應時(shí)間會根據外部系統 的(de)穩定狀況進行改變,所以(yǐ)通過适當的(de)使用超時(shí)來(lái)保護 Java EE 應用程序和(hé / huò)中間件也(yě)是(shì)非常重要(yào / yāo)的(de)。
4. 特定應用程序性能問題下面關注的(de)是(shì)比較嚴重的(de) Java EE 應用程序問題。
關于(yú)特定應用程序性能問題,總結了(le/liǎo)以(yǐ)下幾個(gè)點:
1.線程安全的(de)代碼問題
2.通信 API 缺少超時(shí)設置
3.JDBC 或者關系型 API 資源管理問題
4.缺乏适當的(de)數據緩存
5.數據緩存過度過多的(de)日志記錄。
希望本文能夠幫助您理解一(yī / yì /yí)些常見的(de)性能問題和(hé / huò)壓力點,