我有一个完全使用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