Как определить проблемы производительности и параллелизма на веб-сайте ASP.NET / IIS / SQL Server - PullRequest
2 голосов
/ 10 февраля 2009

Буду признателен за любые советы относительно инструментов и методов, которые я мог бы использовать для подтверждения правильности работы моего недавно завершенного веб-сайта.

Хотя я уверен, что код не выдает ошибок и функционирует должным образом, у меня мало понимания того, как выявлять проблемы производительности / параллелизма IIS, SQL Server и Windows. Например, если веб-сайт подвергся быстрому воздействию огромного потока трафика, как я узнаю, что событие когда-либо происходило, и как я узнаю, справился ли веб-сайт с ним.

Сайт был написан с использованием ASP.NET 2.0 и C #, работающих под управлением Windows 2003 R2 Standard Edition, SQL Server 2005 Workgroup Edition и IIS 6.

Ответы [ 4 ]

1 голос
/ 10 февраля 2009

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

Что касается инструментов и методов, я рекомендую badboy и jmeter в качестве инструментов для нагрузочного тестирования вашего сайта. Badboy прост и может генерировать URL, которые также могут быть использованы в jmeter. Последний делает очень хорошее нагрузочное тестирование вашего сайта. Выполните тесты, которые выполняются в течение длительного периода времени и используют различные аппаратные настройки, чтобы увидеть, как добавление большего количества веб-серверов / серверов приложений влияет на производительность.

Кроме того, ознакомьтесь с PerfMon , инструментом, который позволяет отслеживать локальный или удаленный сервер Windows на предмет частоты конфликтов, загрузки процессора и т. Д.

1 голос
/ 10 февраля 2009

Как уже упоминалось, инструменты генерации нагрузки весьма полезны. Одна вещь, которую вы можете добавить для базы данных, это использовать трассировку SQL. Настройте план тестирования с очень конкретными шагами, и по мере выполнения плана отслеживайте SQL-запрос, выполняемый на сервере.

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

1 голос
/ 10 февраля 2009

Для SQL Server используйте DMV sys.dm_exec_requests и проверьте загрузку процессора, чтение, запись, блокировку и т. Д. И т. Д.

select blocking_session_id,wait_type,* 
from sys.dm_exec_requests
1 голос
/ 10 февраля 2009

Вы можете использовать инструмент создания нагрузки, такой как WebLoad, для захвата, а затем воспроизведения (с возможными изменениями в сценариях) взаимодействия пользователя с пользовательским интерфейсом вашего приложения с множеством потоков и соединений.

...