Прекратите взламывать свой рабочий сервер (что может привести к функциональным ошибкам) и сделайте шаг назад. Можете ли вы воспроизвести проблемы с производительностью в непроизводственной среде? Если нет, то попробуйте.
Вы должны попытаться воспроизвести проблему следующим образом:
- Получите производственное оборудование в своей тестовой среде - веб-серверы, серверы баз данных и т. Д. - на том же оборудовании, что и на производстве
- Запустите тот же набор программного обеспечения, что и для производства, - он включает ту же конфигурацию ASPNET и все другие используемые сервисы.
- Загрузка данных производственного размера (производственных данных, если это возможно) в ваши базы данных (не забудьте настроить брандмауэр вашей лаборатории из Интернета, чтобы он не мог отправлять почту или другие вещи в Интернет, или ваши пользователи могут начать получать уведомления по электронной почте из теста система, которая была бы плохой!)
- Создание смоделированного трафика на сайт до уровня производства - это довольно сложно, но есть много доступных инструментов
Теперь у вас есть шанс повторить проблему в тестировании, вы можете попробовать решения.
Обычно веб-сайты, управляемые базой данных, являются узким местом базы данных, поэтому я бы начал с них. Основные трюки
- Делать меньше запросов
- Оптимизация запросов, которые вы делаете (получать меньше данных, использовать соответствующие индексы и т. Д.)
- Измените структуру базы данных, чтобы упростить для нее запросы (кластеризованные индексы и т. Д., Возможно, денормализовать)
Но любое изменение, которое вы вносите, попробуйте применить его в своей тестовой системе, измерить результаты, и, если это не поможет, ОБРАТИТЕ ВЕРНУТЬСЯ.
В целом изменения конфигурации, скорее всего, будут иметь незначительные отличия, но вы также можете попробовать их.
Если все это звучит как слишком большое усилие, попробуйте бросить аппаратное обеспечение на проблему - время разработчика намного дороже, чем аппаратное. За то время, которое у вас ушло на выполнение вышеперечисленного (могут быть месяцы в зависимости от сложности приложения), вы могли бы купить несколько мясных коробок. Но будьте уверены, что это поможет.
Ваша база данных помещается в ОЗУ? Может ли это вписаться в оперативную память? Если ответы на эти вопросы - «нет» и «да» соответственно, купите больше памяти для базы данных Это один из самых дешевых способов сделать вашу БД быстрее без изменений кода.