Моя проблема в том, что мой сайт ASP.NET работает медленнее на моем производственном сервере сравнительно на моем сервере разработки.
Страница, выполняемая в 120 мс в моей среде разработки, занимает 400 мс для выполнения на сервере. Я отслеживал SQL-сервер с профилировщиком, и запрос, выполняемый на странице с 400 мс на сервере, занимает всего около 50 мс, поэтому я убедился, что моя проблема не связана с SQL-сервером.
Моя машина для разработки - это Intel I7 с оперативной памятью 6 ГБ, производственный сервер - 2x AMD Quad Core с 16 ГБ оперативной памяти.
Есть некоторые моменты, которые вы можете рассмотреть для повышения производительности вашего сайта.
Edit:
оценивайте эффективность своего сайта с помощью этого веб-сайта
http://www.websiteoptimization.com/services/analyze/
http://www.websitepulse.com/
Вы проверили, что debug = false в вашем web.config?
Является ли сервер 64-битным? Попробуйте создать выделенный пул приложений для своего приложения и настройте пул приложений для запуска в 32-битном классическом режиме. Делает какую-то разницу?
Является ли ваш класс предварительно скомпилированным или его настроить для компиляции во время выполнения?
Установить Трассировка = "истина" (<% @Page Трассировка = "истина"...) на вашей странице, и вы получите много полезной информации, в нижней части страницы, когда он загружает в браузере. Вы точно знаете, сколько времени потребуется для обработки запроса на сервере. Если время достаточно низкое, проблема может быть в настройках IIS. Сравните их с теми, которые находятся в вашей среде разработки.
Из чтения всех предложений, и похоже, что ничего не работает, постепенно вводите код из своего сайта и смотрите, как это влияет на время. Удалите около 10 строк кода или HTML за раз, и посмотрите, есть ли огромная разница.
В противном случае это, вероятно, связано с IIS, и, к сожалению, я не являюсь гуру IIS.
Является ли ваш SQL-сервер на другом сервере на производстве, но локальным в разработке?
После того, как я долго стучал головой о стену относительно разницы в производительности моей машины разработки и производственной машины, я, наконец, оказался в стороне от ощущения, которое у меня было глубоко, что процессор действительно имеет значение гораздо больше, чем вы думаете.
Я изменился с решения на базе AMD на решение на базе Intel (Xeon!), получив 3,3 ГГц и более быстрые диски.
Я также получил повышение производительности, вместо того, чтобы быть x3 столь же медленным, как и моя машина для разработки, теперь он спустился на что-то вроде x0.75 медленнее - очевидно, все еще не тем молниеносной скоростью, на которую способна моя машина разработки, но она приближается.
В то время, когда мы отлаживали это, я заметил, что большая часть производительности hog (что неудивительно) приходит от LINQ to SQL, чтобы скомпилировать запросы, что кажется мне странным, так это то, что когда я попытался предварительно скомпилировать запрос LINQ и запустить то же самое на обеих моих машинах, машина разработки оказалась быстрее.
Вам нужно уменьшить переменные.
Попробуйте устранить все различия между двумя средами, а затем внесите изменения один за другим, пока не выясните, что это такое.
Убедитесь, что web.config в обеих средах одинаковый.
Убедитесь, что обе среды указывают на один и тот же сервер базы данных на третьем ящике.
Убедитесь, что одна и та же версия IIS находится в обеих средах.
Убедитесь, что IIS настроен одинаково в обеих средах.
Запустите те же данные теста в обеих средах.
и т.д...
Массивное представление, вызывающее задержку передачи?
Является ли это единственным веб-сайтом, который у вас есть на сервере? 16 ГБ - неплохая память, но если на этом же сервере есть много популярных сайтов, они могут потреблять ресурсы и время процессора.
Кроме того, я не могу думать о какой-либо причине, почему ваш сайт будет медленным в производстве, чем в разработке.
Вы проверили индексы? Они все есть на сервере?