У меня есть веб-приложение, полностью выполненное с Java. Webapp не использует графическую/модельную структуру, вместо этого webapp использует The Model-View Controller. Он выполняется только с помощью спецификации сервлета (сервлет версии 2.4). Webapp разработан с 2001 года, и он очень сложный. Первоначально был построен для работы с Tomcat 4.x/5.x. На самом деле, работает на Tomcat 6.x. Но у нас все еще есть утечки памяти.Проблемы с производительностью Java Webapp
В Depth, спецификация The Webapp может возобновлено:
- Использование Servlet версии 2.4 Спецификации..
- Он не использует никаких рамок
- Он не использует JavaEE (не EJB)
- Он основан на JavaSE (с сервлетов)
- работает только на IE 6+ (из-за его возраст)
Инфраструктура Спецификация
на самом деле, веб-приложение работает в трех средах:
Первый
- IBM сервер (я не помню точно модель)
- Intel Xeon 2,4 ГГц
- 32GB RAM
- 1TB HDD
- Tomcat (Version 6) выполнен для использования 8 ГБ ОЗУ
Второй
- Dell Сервер
- Intel Xeon 2.0Ghz
- 4GB RAM
- 500GB HDD
- Tomcat (Version 5.5) настроен на использование 1.5GB оперативной памяти
Третий
- Dell Сервер
- Amd Opteron 1214 2.20Ghz
- 4GB RAM
- 320GB HDD
- Tomcat (Version 6) настроен на использование 1.5GB ОЗУ
спецификации базы данных
Webapp использует SQL Server 2008 R2 Express Edition в качестве СУБД, за исключением пользователя первой спецификации сервера, которая использует SQ L Server 2008 R2 Standard Edition.Для пулов соединений приложение использует APCP DBCP.
Проблема
Ну, это имеет очень серьезные проблемы с производительностью. Webapp замедляется постоянно и много раз отказывает в обслуживании. Единственный способ восстановить приложение - перезапустить службу Apache Tomcat. Во время аудита производительности я обнаружил несколько проблем программирования (Подобно подключению к базе данных, которое никогда не закрывается, excesive использование коллекции Vector [вместо ArrayList]).
Я хочу знать, как повысить производительность приложения, какие приложения могут помочь мне контролировать производительность Tomcat и использование памяти Webapp.
Все предложения с радостью приняты.
Magic 8 ball говорит: Единороги! –
Вы действительно пробовали что-нибудь, чтобы узнать, где узкие места? Кучи сбрасывают, чтобы найти утечки памяти? Профилирование, чтобы увидеть, есть ли что-нибудь, что ест процессорные циклы? Что-то вроде [Новая реликвия] (http://newrelic.com/), если замедление становится заметным с течением времени? Что-нибудь кроме неубедительно звучащего «аудита»? – millimoose
Каковы ваши аргументы памяти Java? – Pushkar