Оценка эффективности проекта и поиск слабых мест - PullRequest
0 голосов
/ 04 мая 2010

Я работаю в веб-проекте J2EE, в котором много Java, SQL-скриптов, JS, AJAX. Прошло 5 лет, и проект все еще работает нормально.

Я поручил работу по оценке производительности проекта, так как могут быть некоторые проблемы с использованием памяти, задержки логической загрузки БД и другие подобные слабые области производительности. С чего мне начать?

Какие-нибудь лучшие практики, чтобы сделать проект лучше?

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Лучше всего измерить, где ваши узкие места? Для такой работы нужны такие вещи, как jprofiler и т. Д.

0 голосов
/ 10 мая 2010

Обычно, когда кто-то платит за повышение производительности системы, он почти точно знает, чем он / она недоволен. Поэтому сначала составьте список проблем. Тот факт, что система «медленная», не является проблемой, потому что «медленная» всегда связана с чем-то «быстрым» (например, система не успевает за входящим трафиком). Как только у вас есть список, примерно идентифицируйте компоненты как «медленные». Затем поработайте с журналированием (убедитесь, что каждое сообщение имеет префикс с отметкой времени в миллисекундах, переконфигурируйте регистратор, если необходимо). Проверьте, что регистрируется для «медленной» работы, сколько времени система тратит на каждый компонент. Как только вы приблизительно определили медленный компонент, увеличьте детализацию ведения журнала для этого конкретного компонента и попытайтесь выяснить, что с ним не так (медленная БД, плохой код и т. Д.)

Если вам просто нужно сделать систему быстрее, вы можете найти первое место для оптимизации, многократно запуская jstack в процессе, работающем при максимальной нагрузке (некоторые называют этот метод «профилированием Монте-Карло»). Сравнивая последующие дампы стека, вы можете определить, где приложение статистически проводит большую часть своего времени, и улучшить соответствующий блок.

Также полезно подключиться с помощью jconsole к работающему проекту и отслеживать потребление памяти, просматривая файлы журналов, чтобы выяснить, кто выделяет больше всего памяти.

...