Итак, я устраняю некоторые проблемы с производительностью устаревшего приложения и обнаружил довольно специфическую проблему (могут быть и другие).
По существу, приложение использует объектно-реляционный картограф для извлечения данных, но делает это очень неэффективно / неправильно. По сути, он выполняет серию выборок графа сущностей для заполнения сетки данных в пользовательском интерфейсе, а при привязке данных к сетке (это ASP.Net Webforms) выполняет дополнительные выборки, которые ведут к другим выборкам и т. Д.
Чистый эффект этого состоит в том, что выполняется множество крошечных запросов. Использование SQL Profiler показывает, что определенная страница выполняет более 10 000 запросов (для заполнения одной сетки. Ни один запрос не выполняется более 10 мс, и большинство из них регистрируется как 0 мс в Profiler. Каждый запрос использует и освобождает одно соединение, а также серию запросы будут однопоточными (на HTTP-запрос).
Я очень хорошо знаком с ORM и точно знаю, как решить проблему.
Мой вопрос: каков точный эффект от того, что в приложении выполняется много-много небольших запросов? Каким образом это / может ли это подчеркнуть различные компоненты системы?
Например, как это влияет на процессор и память веб-сервера? Это затопит пул соединений и вызовет блокировку? Как это повлияет на память сервера базы данных, процессор и ввод-вывод?
Я ищу относительно общие ответы, главным образом потому, что я хочу начать мониторинг областей, которые, вероятно, будут наиболее затронуты (мне нужно измерить => исправить => повторно измерить). Максимальное количество одновременных пользователей системы может составить около 100-200 пользователей.