我有一個完全使用Java編寫的Web應用程序。 Webapp不使用任何圖形/模型框架,而是使用模型視圖控制器。它僅由Servlet規範(Servlet版本2.4)完成。 自2001年開發的webapp,它非常複雜。最初是爲了與Tomcat 4.x/5.x一起工作而構建的。實際上,運行在Tomcat 6.x上。但是,我們仍然有內存泄漏。Java Web應用程序性能問題
在深度,web應用程序的規格可以恢復爲:
- 用途的Servlet v 2.4規範。
- 它不使用任何框架
- 它不使用的JavaEE(不EJB)
- 它基於JavaSE的(使用Servlet)只有
- 在IE 6+(因爲它是年齡)
基礎設施規格
其實,webapp的工作在三種環境:
首先
- IBM服務器(我不記得確切的型號)
- 英特爾至強2.4GHz的
- 32GB RAM
- 1TB移動硬盤
- 的Tomcat(第6版)配置使用8GB內存
第二個
- 戴爾服務器
- 英特爾至強2.0GHz的
- 4GB內存
- 500GB的硬盤
- 的Tomcat(5.5版)被配置爲使用的RAM 1.5GB
三
- 戴爾服務器
- AMD皓龍1214 2.20Ghz
- 4GB內存
- 320GB HDD
- 的Tomcat(第6版)被配置爲使用的RAM 1.5GB
數據庫規範
該Web應用程序使用SQL Server 2008 R2 Express Edition作爲DBMS,第一個服務器規範的用戶除外,該用戶使用SQ L Server 2008 R2標準版。對於連接池,應用程序使用Apache DBCP。
問題
那麼,它具有非常嚴重的性能問題。 Webapp不斷減速,並且多次拒絕服務。恢復應用程序的唯一方法是重新啓動Apache Tomcat服務。 在性能審計過程中,我發現了一些編程問題(如永不關閉的數據庫連接,超出使用Vector集合[而不是ArrayList])。
我想知道如何提高應用程序的性能,哪些應用程序可以幫助我監視Tomcat性能和Web應用程序內存使用情況。
所有的建議很樂意接受。
魔法8球說:獨角獸! –
您是否真的嘗試過找出瓶頸所在?堆轉儲找到內存泄漏?分析以查看是否有任何處理器週期耗盡?像[New Relic](http://newrelic.com/),如果減速只會隨着時間的推移而變得明顯?除了沒有定論的「審計」之外的任何事情? – millimoose
什麼是Java內存參數? – Pushkar