Назад | Перейти на главную страницу

Как повысить производительность на веб-сайте ASP.NET/IIS/SQL

У нас есть небольшой внутренний веб-сайт ASP.NET, работающий на IIS8 и SQL2014 Express.

Сервер представляет собой локальную виртуальную машину 2012 R2 с выделенным сервером, на которой установлены серверы IIS и SQL.

Использование ЦП сервера редко превышает 25%, использование памяти составляет 50%, а диск почти не перемещается.

Однако веб-страницы иногда могут быть очень медленными, а некоторые запросы могут занять несколько секунд, чтобы что-либо сделать, и это начинает расстраивать моих пользователей (нажатие на ссылку редактирования в некоторых случаях может занять 10 секунд, прежде чем появится текстовое поле).

Поскольку сервер, похоже, не используется, может ли кто-нибудь указать мне в правильном направлении, с чего начать искать улучшения производительности?

Отладка? Шутки в сторону.

и некоторые запросы могут занять несколько секунд, чтобы сделать что-либо

Хватайте их, анализируйте. Это не будет первым случаем, когда программист, не совсем понимающий, что он делает, или не имеющий в виду сценарий реальной нагрузки (или доступный для тестирования), пропускает индексы, которые становятся критическими при производственной нагрузке.

В этом случае вы ничего не можете сделать как системный администратор - это то, что должна исправить сторона программиста.

Пожалуйста, также измерьте задержку диска, потому что это может быть причиной - но обычно: начните профилирование, выполните нагрузочный тест (в отдельной системе) и выясните, какая часть кода работает быстрее.

ЭТО СКАЗАНО: также подумайте о том, чтобы запустить доступ к вашему сайту через облачную вспышку и сохранить их в кеш-памяти - это может ускорить работу пользователей.

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

Из вашего вопроса нечего делать в деталях, но вот несколько общих указателей.

  • SQL Server Express ограничен 1 ГБ ОЗУ. Это может быть изрядной вашей болью прямо здесь. Увидеть Сравнение редакций SQL Server для большего количества ограничений.
  • Посмотрите на нагрузку от хост-сервера. Другие виртуальные машины работают? Что они делают?
  • Какой у вас гипервизор? Как это настроено?
  • Глубоко погрузитесь в свое приложение и посмотрите, как оно ведет себя при взаимодействии с SQL Server. Часто проблемы с производительностью возникают из-за плохо написанных запросов. Запустите SQL Profiler или выполните трассировку, чтобы увидеть, какие запросы поступают. Проведите мониторинг, чтобы найти нарушителей.