Сайт MVC3 работает быстро локально, очень медленно на живом хосте - PullRequest
2 голосов
/ 04 марта 2012

Итак, у меня возникли проблемы со скоростью работы моего сайта, который был в сети уже несколько недель. Это сайт MVC3, использующий MySQL на discountasp.net.

Я очистил структуру сайта и заставил ее работать довольно быстро на моей локальной машине, около 800-1100 мс для загрузки без кэширования. Странно то, что когда я пытаюсь зайти на сайт в реальном времени, я получаю время около 15-16 секунд, иногда зависая на 30 секунд. Я отключил viewstate в web.config, и теперь локальная загрузка загружается за 1,3 секунды (да, как ни странно, немного дольше), а работающий сайт большую часть времени работает до 8-9 секунд, но это все еще довольно плохо.

Без привязки этой проблемы к конкретному случаю (поскольку может быть миллион причин, по которым сайты работают медленно), мне любопытно, есть ли причины, по которым время загрузки между локальным сервером Visual Studio или IIS Express будет работать так быстро в то время как живой сайт будет работать так медленно. Разве что-нибудь кодированное или зависимое не повлияло бы одинаково? Я просто не могу придумать причину, которая затронула бы живой сайт, но не местный.

Есть мысли?

Дополнительные мысли: У меня есть настройка сайта в качестве подпапки, которую я использую для перезаписи URL IIS для сопоставления с поддоменом. Я не слышал об этом раньше, но может ли это быть проблемой?

Screenshot of the local and live sites running

Дальнейшие обновления: Итак, я загрузил простую страницу, которая ничего не делает, кроме запроса всех записей в самой большой таблице, которая у меня есть, без кэширования. На моей локальной машине это в среднем около 110 мс (что все еще кажется медленным ...), а на живом сайте это обычно в два раза больше времени. Если я загружаю страницу несколько раз в базу данных, то имеет смысл, что это сильно повлияет на время загрузки страницы. Я все еще не уверен, если проблема с LINQ или MySQL или MVC в целом (возможно, даже discountasp.net). Database query time

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

Итак, как я упоминал выше, у меня было отключено кэширование для разработки, но только на моей локальной машине.Чего я не осознавал, так это того, что WITH была проблема с кэшированием, которое было включено для сервера LIVE , которое я никогда не выключал, потому что думал, что это помогает исправить медленные скорости!Теперь все это имеет смысл:)

Исправление проблемы с кэшем (IQueryable <> в верхней части набора данных, который должен был кэшировать всю таблицу ..> _>), мои скорости увеличились в 10 раз.

Спасибо всем, кто помог!

0 голосов
/ 04 марта 2012

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

Так что попробуйте добавить атрибут к некоторым вашим контроллерам и посмотреть, не ускоряет ли это:

[SessionState(SessionStateBehaviour.Disabled)]
public class MyController : Controller
{

С другой стороны, я выполнил несколько тестов, и, что удивительно, было быстрее прочитать некоторые из этих объектов из БД при каждом запросе , чем прочитать их один раз, а затем поставить их в состоянии сеанса. Это имеет смысл, так как режим состояния сеанса в рабочей среде был SqlServer, а сериализация / десериализация была явно медленнее, чем просто присвоение значений свойствам из DataReader. Кроме того, изменение, которое имело приятный побочный эффект, заключалось в том, чтобы избежать ошибок десериализации при развертывании новой версии сборки ...

Кстати, даже 992мс - это слишком много, ИМХО. Можете ли вы использовать выходное кэширование, чтобы немного сбить его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...