Странные ошибки памяти SQL Server после обновления до 64-разрядной версии

#sql-server #memory

Вопрос:

Мы только что «обновили» наш сервер производственной базы данных с 32-разрядного до 64-разрядного. Он работает под управлением стандарта SQL Server 2005 в Windows Server 2003. В течение ночи после обновления сервер был недоступен почти час — время ожидания клиентских запросов истекало. Затем проблема, казалось, разрешилась сама собой. Единственная подсказка, которая у меня есть относительно проблемы, — это то, что содержится в журналах SQL server:

LazyWriter: внимание, свободных буферов не найдено.

Диспетчер памяти Зарезервированная виртуальная машина = 8470288 КБ Выделенная виртуальная машина = 2167672 КБ Выделено Благоговение = 0 КБ Зарезервированная память = 1024 КБ Зарезервированная Используемая память = 0 КБ

Идентификатор узла памяти сообщений = 0 Зарезервированная виртуальная машина = 8464528 КБ Зафиксированная виртуальная машина = 2162000 КБ Выделено для AWE = 0 КБ Одностраничный распределитель = 103960 КБ Многостраничный распределитель = 31832 КБ

MEMORYCLERK_SQLGENERAL (Всего) Зарезервирована виртуальная машина = 0 КБ, Выделена виртуальная машина = 0 КБ, Выделен AWE = 0 КБ, Зарезервировано SM = 0 КБ, Выделено SM = 0 КБ, Выделен одностраничный распределитель = 4352 КБ

Затем есть еще много подобных сообщений, начиная с MEMORYCLERK.

Кто — нибудь знает, что происходит? Похоже, что у него закончилась память, и, конечно, на сервере всего 2 ГБ физической оперативной памяти, что не очень много по сегодняшним стандартам, но, конечно, он не должен просто полностью ПЕРЕСТАТЬ РАБОТАТЬ? Должен ли я установить максимальный объем памяти, который SQL может использовать, на 1,6 ГБ или около того? Есть ли что-то еще, что я могу сделать (КРОМЕ установки большего количества оперативной памяти, очевидно)?

Ответ №1:

2 ГБ — это, конечно, не очень много. На самом деле я считаю, что Microsoft рекомендует иметь 2 ГБ памяти только для запуска операционной системы и других задач.

Проверьте эту публикацию в блоге и эту публикацию на форуме Microsoft для получения дополнительной информации.

Память дешевая, добавьте больше, если сможете.

альтернативный текст
(источник: wordpress.com)

Ответ №2:

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

Хотя я не видел ничего официального от MS, сообщается, что установка максимальной памяти где-то между 512 М и 1 Г меньше, чем физическая оперативная память, должна помочь.

Enterprise Edition позволяет не выводить страницы MSSQL на страницы, что также должно решить проблему. И, очевидно, больше оперативной памяти поможет, но, вероятно, не облегчит это.

1 Существуют некоторые споры о том, пытается ли MSSQL выделить слишком много оперативной памяти, операционная система выводит ее на страницу или MSSQL просто выделяет не те пулы. Независимо от этого, max mem должен помочь случаям 1 и 2, а SP2 должен решить 3.

Правка: Коллега указал мне на соответствующую статью в КБ с несколькими исправлениями в списке. Он ссылается на различные сообщения об ошибках (вы используете SP2?), но симптомы и поведение, похоже, соответствуют вашей ситуации.