Производительность Nhibernate Azure - PullRequest
2 голосов
/ 07 сентября 2011

Я работаю над веб-приложением с ASP.NET MVC3.Мы используем nHibernate с SQL Azure.Мы используем настройку по умолчанию nHibernate.

Есть несколько наблюдений, которые я сделал в рамках анализа производительности нашего приложения в отношении SQL Azure.

  1. Каждый запрос занимаетоколо 280 мс для выполнения на Azure.Я не уверен, является ли это время высоким или нормальным.Если у кого-нибудь есть счетчики, пожалуйста, поделитесь.Выполнение этого же запроса на нашем внутреннем сервере SQL Server занимает около 1 мс. (PK, FK и индексы одинаковы на Azure и локальном сервере. Фактически данные также совпадают)

  2. Мыиметь страницу, чтобы показать форму поиска.В нем около 13 полей, которые необходимо заполнить из БД.Когда я загружаю эту страницу, каждый запрос занимает около 280 мс.Теперь, если я бездействую около 5 минут, а затем перезагружаю страницу, выполнение первого запроса занимает около 1,8 с (да, почти 2 с).Остальные запросы занимают то же время, что и ранее.Что вызвало бы этот всплеск?(Я абсолютно слеп в этом. Любой намек был бы признателен.)

1 Ответ

3 голосов
/ 02 марта 2012

Как уже отмечали другие, проверьте, находятся ли ваши экземпляры SqlAzure в том же центре обработки данных, что и ваши веб / рабочие роли. Если они находятся в одном и том же центре обработки данных, они должны обмениваться данными через внутреннюю сеть центра обработки данных. Если нет, они будут подключены через более медленные ссылки.

Статистические данные, которые вы предоставляете выше, указывают, что для запросов SQL существует задержка около 250 мс. Это означает, что между веб-ролью и экземпляром SQL может существовать значительное расстояние.

Отправьте запрос на ваш экземпляр SQLAzure из вашего экземпляра роли web / wroker. Затем откройте Resource Monitor и перейдите на вкладку сети и найдите TCP-соединения от вашего w3wp.exe до IP-адреса вашего экземпляра SQL. Затем вы можете увидеть среднюю задержку TCP-соединения вашей рабочей роли.

Web role's TCP connection latency to SQL Azure

Как видите, средняя задержка для нашей рабочей роли составляет 10 мс или меньше. Если вы видите, что задержка соединения намного превышает 10 мс, скорее всего, ваш экземпляр SQL находится в другом центре данных.

Если у вас нет особых причин, по которым вы хотите, чтобы SQL находился в другом центре обработки данных, я настоятельно рекомендую вам перенести данные SQL в экземпляр в том же центре обработки данных, что и рабочие роли.

НТН.

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