Тайм-аут Проблемы с SQL Server 2014 Express и Entity Framework - PullRequest
0 голосов
/ 01 мая 2019

Недавно мне заменили ноутбук, и мне пришлось установить Visual Studio 2015 и SQL Server 2014 Express с Management Studio.

Моей предыдущей средой была Visual Studio 2015 с SQL Server 2008 R2 Express сManagement Studio.

Я восстановил базы данных 2008 R2 в SQL Server 2014 Express, те же имена баз данных, имена входа и т. Д.

Теперь, когда я запускаю любое из моих приложений ASP.NET MVC 5 (используя EntityFramework 6) на моем ноутбуке, использующем Visual Studio, я получаю случайные ошибки тайм-аута.Пожалуйста, см. Ниже.

enter image description here

enter image description here

enter image description here

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

Мне трудно понять, почему это так, как на моем предыдущем ноутбуке с SQL Server2008 R2 Express У меня никогда не было ни одной из этих проблем.

Кроме того, эти приложения находятся на живом веб-сервере и используются тысячами пользователей каждый день без каких-либо из этих проблем.Это заставляет меня думать, что возможно что-то не так с установкой SQL Server 2014 Express на моем ноутбуке.

Я видел другие комментарии по поводу расширения Command Timeout на моем DbContext

public class MyDatabase : DbContext
{
    public MyDatabase ()
    : base(ContextHelper.CreateConnection("Connection string"), true)
    {
    ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
    }
}

Но я не рассматриваю это как решение, поскольку мне это не нужно с моим предыдущим ноутбуком / средой, а текущие приложения также не нуждаются в этом.

Я в тупике ибыл бы очень признателен за любую помощь или руководство.

Спасибо.

Обновление

Благодаря предложениям Стива Пи я решил проверить производительность памяти отмой новый ноутбук при одновременной работе Visual Studio 2015 и SQL Server Express 2104.Ниже приведен снимок экрана, на котором показано, что используется 90% доступной памяти (3,5 ГБ из 3,9 ГБ).Я далеко не эксперт в настройке устройства для разработки программного обеспечения, однако, это может быть причиной того, что когда я запускаю свои приложения локально, у них истекает время ожидания.

Есть ли кто-нибудь наStackoverflow, кто может сообщить мне, если это похоже на возможную проблему?

Спасибо.

enter image description here

1 Ответ

1 голос
/ 02 мая 2019

Сначала я хотел бы подключить профилировщик для захвата запросов, поступающих из EF. Для SQL Server вы можете использовать ExpressProfiler. Это даст вам фактический SQL EF, который пытается запустить, количество строк чтения, записи и время выполнения. Скопируйте запросы SQL и вставьте их в новое окно запросов в БД и выполните их, а также посмотрите на план выполнения. Время выполнения коррелирует с EF? (измените параметры и перезапустите в SQL, чтобы убедиться, что вы не получаете кэшированные результаты)

Другими факторами являются аппаратные средства на двух ноутбуках. Вы бы надеялись, что у нового ноутбука будет больше мощности, чем у старого, больше ядер, лучшие ядра, больше оперативной памяти, но как они сравниваются? Сколько памяти свободно, когда ничего не работает? Что за жесткий диск был в двух машинах? Например, переход с i7 с SSD на i3 с 5400 об / мин HDD, и половина ОЗУ будет чрезвычайно заметна, даже если тактовая частота выше.

Когда речь идет о базах данных, существует ряд факторов, которые могут повлиять на производительность, даже при резервном копировании и восстановлении. Например, уровень изоляции и параметры модели восстановления для базы данных могут сыграть свою роль, особенно для больших баз данных. Я бы также посмотрел на настройки сервера, такие как объем ОЗУ, выделенный серверу базы данных для использования. Не стесняйтесь вставлять некоторые результаты из профилировщика для медленных запросов.

Редактировать: Исходя из скриншота использования ресурса, я предполагаю, что ваш новый ноутбук потенциально недостаточно силен. 4 ГБ ОЗУ - это пустяки в Windows 10, особенно для работы с Visual Studio и SQL Server, даже для базы данных, используемой только для разработки. График истории процессора и диска также показывает высокую активность. Если это все, с чем вам нужно работать, то следующим шагом будет посмотреть, что использует память. SQL Server по умолчанию будет пытаться использовать все, что доступно, и это может быть довольно жадным, но обычно рекомендуется устанавливать границы на сервере. В SQL Management вы можете вызвать свойства сервера и выбрать «Память», чтобы установить минимальный и максимальный объем памяти. Для 4 ГБ я бы установил минимальное значение 500 МБ, а максимальное - 2000 МБ. Для процессоров вы можете использовать «Повышение приоритета SQL Server»

Затем, на стороне базы данных, посмотрите на файл и параметры восстановления. Каков размер файла базы данных MDF и журнала транзакций? (Файл LDF) В окне свойств базы данных в разделе «Общие» вы должны увидеть «Размер», который является размером MDF. Для LDF вам, вероятно, потребуется проверить файловую систему. Большой LDF может ухудшить производительность и указать, что ваша база данных должна быть скопирована, а журнал сжат / усечен. Lof-файлы по умолчанию растут в процентах, поэтому они могут быстро расти и перемешивать диск. На вкладке «Параметры» вы можете проверить «Модель восстановления» и установить для нее значение «Простой» для базы данных разработчиков, чтобы значительно сократить отток / рост файла журнала. Производственные базы данных будут использовать "Full".

В целях разработки помогает получить немного больше удовольствия от ноутбука. В то время как такие вещи, как «ультра книги», выглядят как хорошие варианты, приятны и легки, они редко обладают достаточным количеством ресурсов и ресурсов, необходимых для разработки. (плюс, как правило, плохие клавиатуры и дисплеи для загрузки! :)) Существует также значительный разрыв в цене между ультра книгами и ноутбуками с заменой рабочих станций. То, что я посчитал нужным в этом разрыве и послужило исключительной заменой для разработки, - это игровые ноутбуки. Они настроены на производительность и обычно имеют минимум 8 ГБ с доступным расширением. Они также поставляются с исключительными клавиатурами и дисплеями. Они, как правило, немного дешевле, чем замены рабочих станций, которые, кажется, стоят дороже. Я использую серию MSI GE65, которая поставляется с 16 ГБ, SSD + HDD, отличной клавиатурой и стоит на 1000 долларов дешевле, чем ближайший ноутбук с «рабочей станцией». Это привлекает пару взглядов, приходящих на сайт клиента с игровым ноутбуком со светодиодной клавиатурой и значком крышки, хотя ни одной игры на нем! :)

...