Проблемы с памятью SQL Server Express 2008 R2

#sql-server #sql-server-2008 #memory #sql-server-express #out-of-memory

#sql-сервер #sql-server-2008 #память #sql-server-express #нехватка памяти

Вопрос:

У меня есть веб-сайт, работающий на сервере Windows 2008 R2, использующий базу данных SQL Server Express 2008 R2, и в последние несколько дней у меня возникли довольно неприятные проблемы с памятью.

Вот статистика сервера:

  • Это облачный сервер Rackspace
  • Windows Server 2008 R2 Enterprise SP1 x64
  • Четырехъядерный процессор AMD Opteron 2,34 ГГц
  • 2 ГБ оперативной памяти
  • SQL Server 2008 R2 Express Edition с расширенными службами x64
  • Используется полнотекстовое индексирование

Веб-сайт работает нормально уже несколько месяцев, но внезапно я начал видеть ошибки, связанные с нехваткой памяти SQL Server. Вот наиболее распространенные исключения, которые я видел:

Предупреждение: произошла фатальная ошибка 9001 22 октября 2011 года в 5:02 утра. Обратите внимание на ошибку и время и обратитесь к системному администратору.


В «внутреннем» пуле ресурсов недостаточно системной памяти для выполнения этого запроса.


Соединение с сервером было успешно установлено, но затем во время процесса входа в систему произошла ошибка. (поставщик: поставщик разделяемой памяти, ошибка: 0 — Ни один процесс не находится на другом конце канала.)


Ошибка: 4060, Серьезность: 11, Состояние: 1. (Параметры:). Ошибка выводится в кратком режиме, поскольку во время форматирования произошла ошибка. Трассировка, ETW, уведомления и т. Д. Пропускаются. Ошибка: 18456, Серьезность: 14, Состояние: 1. (Параметры:). Ошибка выводится в кратком режиме, поскольку во время форматирования произошла ошибка. Трассировка, ETW, уведомления и т. Д. Пропускаются.


Ошибка: 3980, Серьезность: 16, Состояние: 1. (Параметры:). Ошибка выводится в кратком режиме, поскольку во время форматирования произошла ошибка. Трассировка, ETW, уведомления и т. Д. Пропускаются.

Похоже, что веб-сайт по-прежнему отвечает по большей части. Больше всего страдают страницы, которые записываются в базу данных.

Я попытался перезапустить службу sqlexpress, а также перезапустить сервер. Оба решения устраняют симптомы, но проблема возвращается примерно через 10-15 часов.

При возникновении этих ошибок диспетчер задач сообщает, что используется около 1,8 ГБ памяти. После перезапуска службы используемая память снижается примерно до 600 МБ и очень медленно поднимается по резервной копии, пока снова не начнут появляться исключения.

Любая помощь будет принята с благодарностью … спасибо!

Комментарии:

1. Пожалуйста, свяжитесь со мной по адресу marco.marsala ПО АДРЕСУ live.it чтобы узнать, применимо ли наше решение в вашем случае, чтобы определенно устранить первопричину этой досадной проблемы

Ответ №1:

Журнал ОШИБОК будет содержать некоторую важную информацию о шаблоне распределения памяти, когда ситуация начала ухудшаться. Строки будут выглядеть примерно так:

   MEMORYCLERK_SQLGENERAL (node 1)                                  KB 
   ---------------------------------------------------------------- --------------------
   VM Reserved                                                      0
   VM Committed                                                     0
   AWE Allocated                                                    0
   SM Reserved                                                      0
   SM Commited                                                      0
   SinglePage Allocator                                             136
   MultiPage Allocator                                              0

   (7 row(s) affected)
 

Для поиска таких случаев в файлах журнала ОШИБОК следуйте инструкциям из инструкции по использованию команды DBCC MEMORYSTATUS для мониторинга использования памяти на SQL Server 2005, поскольку выходные данные DBCC MEMORYSTATUS и выходные данные в ЖУРНАЛЕ ОШИБОК из-за состояния ООМ очень похожи.

Комментарии:

1. Я нашел одно из случаев, но я все еще не уверен, что я ищу. Я прочитал ту ссылку MEMORYSTATUS, которую вы мне дали, но я все еще не уверен, что я ищу. Я загрузил выдержку из журнала ОШИБОК здесь, если вы хотите взглянуть: db.tt/Jv3y643t Дайте мне знать, если увидите какие-нибудь красные флажки. Спасибо!

2.MEMORYCLERK_FULLTEXT занимает 963840 Кб. Каково состояние sys.dm_fts_memory_buffers msdn.microsoft.com/en-us/library/ms180044.aspx ? Согласно msdn.microsoft.com/en-us/library/ms142560.aspx , ваши 2 ГБ ужасно неадекватны.

3. Спасибо! Я уже в значительной степени планировал увеличить объем оперативной памяти на этом сервере. Я просто не уверен, что это решит эту проблему или просто приведет к тому, что для исчерпания памяти потребуется немного больше времени. Что касается sys.dm_fts_memory_buffers , я только что выполнил запрос select и получил нулевые строки. Я попробую запустить его снова, когда начнут поступать ошибки.

4. Запрос следует запускать, когда в системе мало памяти. Но он все равно может возвращать 0, указывая на то, что операция построения индекса FT не выполняется.

5. Я следил за системой, но, конечно, проблемы с нехваткой памяти больше не появляются. Я все равно собираюсь увеличить объем памяти в системе. Спасибо за вашу помощь!