Первоначально я разместил это на StackOverflow, но мне кажется, что проблема связана с конфигурацией оборудования / ОС. Я надеюсь, что у кого-то здесь был подобный опыт и он может дать совет.
Я развернул приложение MVC2 в IIS7.5, работающем на сервере Windows Server 2008 R2 Standard (физическая машина; Dell R710 с большим количеством памяти). Он подключается к базе данных SQL Server 2008 (также физический компьютер; Windows Server 2008 R2 Standard; Dell R710 с большим количеством памяти), и производительность приложений ужасна. Это довольно просто и требует лишь нескольких вызовов хранимых процедур.
Разработчик протестировал приложение, работающее в отладчике, на своей собственной рабочей станции (Windows 7, 64-бит; IIS7.5), подключенной к той же серверной части базы данных. Он кричит. Нагрузки в мгновение ока. Запуск под Server 2008 R2 занимает около 10-15 секунд и делает паузу между каждым обращением к БД. Я запускаю тесты в SQL Server Profiler, и SP работают быстро. Проблема с производительностью проявляется при переходе на Server 2008 R2.
Что я пробовал до сих пор:
Каждый из них не оказал заметного влияния на производительность.
Любая помощь в диагностике этой проблемы с производительностью будет принята с благодарностью, спасибо.
ОБНОВЛЕНИЕ 1:
Похоже, что открытие соединения с базой данных является частью узкого места, и последующий запуск хранимых процедур также занимает значительное время:
-Открытое соединение с базой данных: 5 секунд (последующие соединения кешируются, поэтому они не требуют 5 секунд)
-Первая скорость: <1 сек.
-Второй ход: 5 сек.
-Третья скорость: <1 сек.
-Четвертая скорость: <1 сек.
-Пятая скорость: 6 сек.
я хотел бы использовать Запрос Экспресс, (один исполняемый файл, установка не требуется) на веб-сервере. Используйте SQL-запросы, записанные в профиле SQL, с той же аутентификацией SQL, что и ваш сайт MVC.
Это позволяет вам проверить, есть ли проблема с подключением необработанного SQL, и вы можете решить ее оттуда.
Основные ответы:
MVC должен быть быстрым на сервере.
Есть ли различия в аутентификации? Клиент -> IIS или IIS -> SQL? Как это устроено?
И вы уверены, что приложение работает под управлением IIS 7.5, а не IIS Express или ASP.Net Development Server?
Причина, по которой я спрашиваю, заключается в том, что серверы разработки IIS Express и ASP.Net запускаются как идентификатор пользователя - проблема аутентификации может быть не очевидна оттуда (особенно при локальном запуске).
Плохо ли он работает на сервере при запуске с консоли (если это вариант - я бы обычно не отключал проверки обратной связи и т. Д., Просто чтобы заставить его работать оттуда)?