Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
MS SQL Server 2008 R2 (ОС: Windows Server 2008 R2 ) занимает всю выделенную ему максимально память, после чего начинаются жуткие тормоза; после освобожения все снова работает нормально. Повилась необходимость автоматизировать это дело по освобождению. Скрипт освобожения памяти я уже написал. Чтобы это было не регулярно, а только лишь, когда память занята по максимуму, осталось программно узнать объем занятой памяти SQL-сервером. Может, кто-то уже тоже сталкивался с этим или подобной задачей? Какие есть варианты?
25 сен 14, 10:44    [16619730]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
после освобожения все снова работает нормально. Повилась необходимость автоматизировать это дело по освобождению.

Очищайте _процедурный_ кэш от устаревших планов выполнения.
Или принуждайте оптимизатор генерировать новые планы для замещения
25 сен 14, 10:48    [16619750]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, я Вас в теории понимаю, только просьба "поближе к телу" :)
25 сен 14, 10:50    [16619768]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
только просьба "поближе к телу" :)

Интересно взглянуть на ваш "Скрипт освобожения памяти я уже написал."
25 сен 14, 11:03    [16619869]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
aleks2
Guest
okwell5
Какие есть варианты?

Как затормозило - так и чисти.

ЗЫ. Во народ фигней страдает. Очистил, типо память, и фсе запорхало.
25 сен 14, 11:07    [16619903]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
aleks2
okwell5
Какие есть варианты?

Как затормозило - так и чисти.

ЗЫ. Во народ фигней страдает. Очистил, типо память, и фсе запорхало.


Стандартная логика любого инженера поддержки, "не работает, перезагрузи":)
25 сен 14, 11:17    [16619959]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
okwell5
MS SQL Server 2008 R2 (ОС: Windows Server 2008 R2 ) занимает всю выделенную ему максимально память, после чего начинаются жуткие тормоза; после освобожения все снова работает нормально. Повилась необходимость автоматизировать это дело по освобождению. Скрипт освобожения памяти я уже написал. Чтобы это было не регулярно, а только лишь, когда память занята по максимуму, осталось программно узнать объем занятой памяти SQL-сервером. Может, кто-то уже тоже сталкивался с этим или подобной задачей? Какие есть варианты?


"забилась память" :) видимо не кэшем планов. а просто data cache подрос и sql server взял скока ему выделили... так и должно быть.

почитайте про parameter sniffing... так как вам чистка кэша планов помогает. похоже на то... читать также:

- statistics
- tf 4316
- option(optimize for unknown)
- option(optimize for @param = )
- option(recompile)
- parameterization simple/force
25 сен 14, 12:27    [16620461]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, перепутал, скрипт я писал для архивации и переноса, а для освобождения я 2 задания настроил с интервалом в пару минут:
 sp_configure 'max server memory (MB)', 3000 --освобождение


И то же самое
 sp_configure 'max server memory (MB)', 30000 --возврат максимального значения


Но делать это по расписанию неправильно, надо лишь, когда забилась память. Читать - это потом, да и не так просто: база 1С-кая,
так что можно долго исследовать и искать, а жизнь идет, и временное решение нужно сейчас; потом искать узкие места можно будет.

Рад за отзывчивость, спасибо, что предлагаете, в каких местах смотреть надо, - глобальное решение проблемы. Но давайте мы начнем хотя бы с малого: ответа на мой вопрос. Дальше можно будет и поиграться с настройками планов, и прочими вещами.
25 сен 14, 14:18    [16621139]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
Glory, перепутал, скрипт я писал для архивации и переноса, а для освобождения я 2 задания настроил с интервалом в пару минут:
 sp_configure 'max server memory (MB)', 3000 --освобождение



И то же самое
 sp_configure 'max server memory (MB)', 30000 --возврат максимального значения

Мда. Измение настройки max server memory вступает в силу только после перезагрузки сервера.


okwell5
Но давайте мы начнем хотя бы с малого: ответа на мой вопрос.

Да ради Бога
http://msdn.microsoft.com/en-us/library/ms190924.aspx

okwell5
Дальше можно будет и поиграться с настройками планов, и прочими вещами.

Поперезагружать сервер, например. По расписанию.
25 сен 14, 14:29    [16621229]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, сервер не перезагружается, а работает непрерывно.

Ссыль Вы мне скинули, там описана информация по Memory Manager Object, но как мне сделать примерно следующее:
SELECT Free Memory
25 сен 14, 14:52    [16621405]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
Glory, сервер не перезагружается, а работает непрерывно.

Именно поэтому ваши sp_configure 'max server memory ничего не делают с памятью.
И никакого влияния на память это "скрипт" не оказывает.

okwell5
Ссыль Вы мне скинули, там описана информация по Memory Manager Object, но как мне сделать примерно следующее:

прочитать ссылку до конца и узнать про sys.dm_os_performance_counters.
25 сен 14, 14:55    [16621431]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, прочитал. Классно! Вот это я понимаю "ближе к телу" - то, что надо, Спасибо! Здесь я вижу реально полезную информацию по загрузке и работе сервера. Теперь, имея эти данные, можно и анализировать. Сделал селект всего по необходимой базе(в файле)

К сообщению приложен файл (Server_conf.xls - 30Kb) cкачать
25 сен 14, 15:18    [16621588]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
Сделал селект всего по необходимой базе(в файле)

И вы там увидели причины низкой производительности ?
25 сен 14, 15:28    [16621635]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, до настоящего момента у меня этой информации не было; теперь это даст мне решить больше моих задач быстрее, и по производительности тоже.
А по поводу очистки процедурного плана кэша и генерации новых планов обязательно почитаю, спасибо за помощь!
25 сен 14, 16:40    [16621994]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
churupaha, спасибо! Почитаю.
25 сен 14, 16:42    [16622000]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
до настоящего момента у меня этой информации не было;

Вы до этого не знали, что в windows существует Performance Monitor ?
25 сен 14, 16:49    [16622037]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, пользуюсь. Только, почему-то в windows-окне меньше информации.
25 сен 14, 16:57    [16622081]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
Только, почему-то в windows-окне меньше информации.

Ну конечно.
Вы думаете, что sys.dm_os_performance_counters берет счетчики из воздуха ?
25 сен 14, 17:00    [16622096]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
tarrus
Member

Откуда: Bergen
Сообщений: 831
Glory
Мда. Измение настройки max server memory вступает в силу только после перезагрузки сервера.



Кстати нет, перезагрузка не требуется. Server Memory Server Configuration Options
25 сен 14, 17:17    [16622201]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, Вы мне дали понять, что это одни и де же данные, половину которых я не могу найти в экранной форме; Зато важно, что я получил их все сразу мгновенно для конкретной базы программно - то, что мне нужно было, я получил ответ на свой вопрос по теме.
25 сен 14, 17:22    [16622237]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
я получил ответ на свой вопрос по теме.

Да мне жалко просто ваш сервер. Из-за ваших методов "увеличения производительности"
25 сен 14, 17:27    [16622269]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Glory, Ну тема-то о "Как узнать...". Если про планы и кэши, то давайте создадим тему. Так как тема слишком уж актуальная, то админов форума попросим выставить ее как краткий ликбез, что нужно делать в таком случае. Ну или просто тему и достаточно, кому надо, найдут.
25 сен 14, 17:39    [16622338]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Glory
Member

Откуда:
Сообщений: 104760
okwell5
Если про планы и кэши, то давайте создадим тему

А вы думаете, что таких тем нет ?

okwell5
Ну или просто тему и достаточно, кому надо, найдут.

Ну вы же не нашли
25 сен 14, 17:41    [16622361]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
okwell5
Glory, прочитал. Классно! Вот это я понимаю "ближе к телу" - то, что надо, Спасибо! Здесь я вижу реально полезную информацию по загрузке и работе сервера. Теперь, имея эти данные, можно и анализировать. Сделал селект всего по необходимой базе(в файле)
Вам давали ссылку на Memory Manager, а вытащили вы какую то ерунду к памяти отношения не имеющую. Вы уверены что знаете что делаете?
26 сен 14, 03:05    [16623678]     Ответить | Цитировать Сообщить модератору
 Re: Как программно узнать объем занятой памяти сервером?  [new]
okwell5
Member

Откуда:
Сообщений: 116
Mind, невнимательно посмотрел, думал уже есть там мое значение. Нет, не нашел еще. Всего-то надо узнать элементарную вещь. Лан, много времени уходит здесь, иду разбираться.
26 сен 14, 10:42    [16624458]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить