Мониторинг и оптимизация производительности веб приложения?
Здравствуйте.
Хочу обсудить возможности по быстрой организации мониторинга производительности веб сайта. Ситуация следующая: Есть веб сайт, посещаемость около 11000 чел. в сутки, около 360000 просмотров страниц в сутки. Сайт написан на asp.net web forms + asp.net mvc3. Использует SQL Server 2012, хоститься на выделенном сервере. Проблема в нагрузке на процессоры, на остальные подсистемы (память, диск, сеть) нагрузка приемлимая.
Сервер: HP DL160 G6, 2 Xeon 5620, 32 GB RAM, 2 SAS HDD 15000RPM.
В часы пик нагрузка на процессор составляет в среднем 90%, в остальное время — от 15 до 60%.
Можно решить проблему путем установки более мощьных процессоров, можно за счет оптимизации программного кода. При написании кода больше ценилось время на разработку нежели производительность, поэтому, есть возможности по оптимизации. Большой вопрос — где?
Собственно вопрос к сообществу: как првести мониторинг сайта для того, чтобы определеить какие страницы (какие параметры страниц) вызывают наибольшую нагрузку на ЦП. причем, хотелось бы, провести такой мониторинг с минимальными затратами. Какие будут идеи?
Такую нагрузку 2 Xeon должен вообще даже не замечать. У меня 50к и 300-400К хитов держится на одном Dual Core, правда в пиках его уже не хватает, но это совсем другая история.
Советы тут стандартные — профайлинг базы, кода, смотреть что грузит сервер и цпу и от этого и плясать.
С базой все в порядке, запросы оптимизировал основательно еще год назад, кроме того через профайлинг и эдвайсер оптимизирую каждые 3 месяца в автоматическом режиме. нагрузка на диски в среднем 10% от максимума. нагружен именно CPU, причем веб сервер использует в пики примерно 60-75%, SQL Server использует не более 15%.
Программный код у меня довольно наворочен, местами очень сложная логика (хотя может это я только так думаю). в общем именно веб сервер генерирует основную нагрузку.