Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL2005 + Win2008 - утечка памяти  [new]
Ihor Bobak
Member [заблокирован]

Откуда: BIT Impulse
Сообщений: 983
Есть комп AMD Phenom 2 с 8 гигами оперативки, рейд и пр. - такой себе мини сервер. Стоит на нем Win2008 Enterprise x64 и SQL 2005 x64 SP3 с последним кумулятивным апдейтом (4-м, если не ошибаюсь - несколько дней назад апдейтил). Перезапускаю систему для чистоты експеримента.

Есть база, в ней 20 миллионов строк в одной таблице. Запускаю select count(*) from эта_таблица. Жду, жду, жду... а в это время запустил SysInternals ProcessExplorer и смотрю сколько памяти какой процесс жрет. Так вот, процесс sqlsrv.exe (или как там его) зажрал всего 130 метров (при старте был 80 метров). Но на момент, когда я еще не запустил запрос - свободной памяти было около 7 гиг, и этот объем плавно себе уменьшается до 1.5 гиг... и так дальше.

Никак не могу понять - ЧТО ЖЕ КУШАЕТ 7 ГИГОВ ПАМЯТИ ПРИ СТОЛЬ ПРОСТОМ ЗАПРОСЕ, И ПОЧЕМУ ЭТОГО НЕ ВИДНО В ИНФОРМАЦИИ ПО ПРОЦЕССАХ? ProcessExplorer не показывает существенного увеличения working set ни у одгого процесса, только disk activity у sqlsrv.exe, и увеличение с 80 до 130 метров working set у sqlsrv.exe. Больше никакой активности (я сейчас в офисе один - никто точно не юзает сервер, это гарантировано).

Хочу Вас спросить - было ли у кого либо что-то подобное, и как лечили?
18 авг 09, 22:21    [7553942]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
1) Что-то мне кажется, что несмотря на то что вы используете X64, также включено расширение AWE.

2)Что вернет?
select cntr_value/1024 [memory_sqlserver, mb] from master..sysperfinfo 
where counter_name = 'Total Server Memory (KB)'

3) Более того,
SELECT Count(*) из таблицы в 20 млн строк предсказуемо должен заполнить доступный Buffer Pool, а это не 80 и не 130 МБ памьяти
18 авг 09, 22:47    [7553995]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Ihor Bobak
Member [заблокирован]

Откуда: BIT Impulse
Сообщений: 983
Александр Волок (def1983)
1) Что-то мне кажется, что несмотря на то что вы используете X64, также включено расширение AWE.


на момент инсталляции (это было месяцев 2 назад) явным образом я ничего не включал. поскольку инсталлировалась x64 - я не думаю, что в ней по умолчанию будет включен AWE.

А не подскажете где это посмотреть? Boot.ini на диске c отсутствует...
Простите, конечно, за чайниковский вопрос - но только недавно начал работать с Win2008.

Александр Волок (def1983)

2)Что вернет?
select cntr_value/1024 [memory_sqlserver, mb] from master..sysperfinfo 
where counter_name = 'Total Server Memory (KB)'

736 после запуска.

хотя если на то пошло, то не вижу этого значения - см. картинку

[quot Александр Волок (def1983)]
3) Более того,
SELECT Count(*) из таблицы в 20 млн строк предсказуемо должен заполнить доступный Buffer Pool, а это не 80 и не 130 МБ памьяти


всеравно эти 736 мег - это НЕ 7 гиг. А куда деваются 7 гиг после запуска этого запроса - вот в этом вопрос.

Еще скажу, что скорость харда на том сервере тестировал HDTach - показывает 200 мег/сек.

я только что переписал mdf и ldf на другой сервер - где WinXP x64 c 6 гигами, тот же SQL2005. Подобных странностей там нет, и более того - запрос существенно быстрее отрабатывает. Комп там намного слабее, но разница в операционке.

Это все наталкивает на мысль о том, что что-то не так с SQL2005 именно на Win2008...

К сообщению приложен файл. Размер - 0Kb
18 авг 09, 23:39    [7554074]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Ihor Bobak
Member [заблокирован]

Откуда: BIT Impulse
Сообщений: 983
простите, неправильно спецсимволы расставил - мой ответ всередине вашей второй цитаты
18 авг 09, 23:40    [7554078]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Что вернет этот скрипт?
exec sp_configure 'show advanced options', 1
reconfigure with override


exec sp_configure 'min server memory (MB)'
exec sp_configure 'max server memory (MB)'
exec sp_configure 'awe enabled'

exec sp_configure 'show advanced options', 0
reconfigure with override
18 авг 09, 23:49    [7554091]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Ihor Bobak
Member [заблокирован]

Откуда: BIT Impulse
Сообщений: 983
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
min server memory (MB)              0           2147483647  0            0

name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
max server memory (MB)              16          2147483647  2147483647   2147483647

name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
awe enabled                         0           1           0            0

Configuration option 'show advanced options' changed from 1 to 0. Run the RECONFIGURE statement to install.
19 авг 09, 04:56    [7554236]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Ihor Bobak
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
 min server memory (MB)              0           2147483647  0            0

name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
 max server memory (MB)              16          2147483647  2147483647   2147483647

name                                minimum     maximum     config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
awe enabled                         0           1           0            0

Configuration option 'show advanced options' changed from 1 to 0. Run the RECONFIGURE statement to install.


У вас не не ограничен порог использования памяти, которую может использовать SQL Server.

Собственно, он и использует большую ее часть при чтении данных из таблицы. Я думаю, вам известно, что SQL Server не может работать со страницами напрямую на диске.
Необходимые страницы сначала загружаются в область ОЗУ, именуемую Buffer Pool, затем только происходит операции над ними.

Чтобы ограничить используемый объем:

exec sp_configure 'show advanced options', 1
reconfigure with override

exec sp_configure 'max server memory (MB)', 2000
reconfigure with override

exec sp_configure 'show advanced options', 0
reconfigure with override
19 авг 09, 10:16    [7554730]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Вероятно у учетной записи под которой запускается SQL Server есть право на lock page in memory. При этом Task Manager показывает память не правильно, используйте PerformanceMonitor и счетчик SQLServer:Memory Manager - Total Server Memory(Kb). Это нормальное поведение сервера, можно отнять это право и смотреть память в таскманагере, а можно ничего не делать.
19 авг 09, 10:23    [7554762]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
Ihor Bobak
Member [заблокирован]

Откуда: BIT Impulse
Сообщений: 983
pr0ger
Вероятно у учетной записи под которой запускается SQL Server есть право на lock page in memory. При этом Task Manager показывает память не правильно, используйте PerformanceMonitor и счетчик SQLServer:Memory Manager - Total Server Memory(Kb). Это нормальное поведение сервера, можно отнять это право и смотреть память в таскманагере, а можно ничего не делать.


Смотрел в политиках в User Rights Assigment / Lock Pages in Memory - там пусто.
SQL2005 сервис запускается из-под Local System Account.

За подсказку про счетчик большое спасибо. И господину Александру за max server memory тоже.
20 авг 09, 15:19    [7562368]     Ответить | Цитировать Сообщить модератору
 Re: SQL2005 + Win2008 - утечка памяти  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Local System Account имеет право Lock Pages in Memory по умолчанию, хотя и не отображается в политике.
20 авг 09, 16:29    [7562914]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить