Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Саша235 Member Откуда: Сообщений: 6 |
Здравствуйте. Есть железный сервер sql2014sp1 (12.0.4100.1) 12 настоящих ядер, 100Гб ОЗУ. Он зеркалируется на ВМ с sql 2014sp1+cu (12.0.4422.0). 6Гб, сколько то ядер. Для скуля отдавал 2-3-4 Гб (max mem). После субботнего реиндекса на принципале мирроринг рвется. Ошибки на принимающей стороне There is insufficient system memory in resource pool 'internal' to run this query, There is insufficient system memory in resource pool 'default' to run this query, Failed allocate pages: FAIL_PAGE_ALLOCATION 2. После рестарта службы скуля на мирроре и нажати resume на принципале какое то время мирроринг идет, может завершиться успешно, может опять упасть. Вопрос гуглил. Грува нет, служба запущена от учетки которой не разрешено фиксировать страницы в памяти. После долгих мытарств увидел, что при передаче логов с принципала на миррор растет цифра select pages_in_bytes from sys.dm_os_memory_objects where type='MEMOBJ_DBMIRRORING'. Растет именно при передаче, не при накатывании логов. Есть советы как забороть? Заранее спасибо. |
6 окт 15, 19:00 [18243318] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5493 |
мало у вас памяти на приемнике индексы, поди, большие перестраиваете на исходном, вот и становится Log Cache плохо - не впИхивается невпихУемое. |
||
6 окт 15, 19:38 [18243496] Ответить | Цитировать Сообщить модератору |
Саша235 Member Откуда: Сообщений: 6 |
komrad, Спасибо за участие. Да, некоторые индексы десятки гигов. Прошу прощения если скажу пургу, но я считал что логирование и мирроринг работает не так. На принципале одна команда alter index ... rebuild порождает гигабайты логов. Когда работает эта команда могут строиться какие-то структуры, что то пихаться в темпдб и т.д. И может не хватить памяти для этих структур, кэшей, временных объектов. Но в логах хранится не эта команда, а реально изменяемые данные. И поэтому логов так много (у меня полный реиндекс генерит около тера логов, хотя индексов 3.5тыс и весь этот объем передается на миррор). И на принимающей стороне не выполняется команда alter index, а просто данные из лога забиваются в страницы в mdf файле. Поэтому на мирроре не нужна память, так как не создаются объекты, которые создавались на принципале. И про 'MEMOBJ_DBMIRRORING' я не просто так написал. Сколько бы я не отдавал памяти скулю, я пробовал 2-3-4 Гига после рестарта сервиса MEMOBJ_DBMIRRORING занимает мало. Но потом начинает увеличиваться. И когда она подойдет к max mem в этот момент какой то другой части скуля памяти не хватает. |
7 окт 15, 10:30 [18245172] Ответить | Цитировать Сообщить модератору |
Саша235 Member Откуда: Сообщений: 6 |
komrad, И еще добавка: в конце концов все получается и скулю хватает этих 4 Гигов, только рестарты надо делать три или четыре раза :-(. |
7 окт 15, 11:40 [18245560] Ответить | Цитировать Сообщить модератору |
Lepsik Member Откуда: glubinka Сообщений: 4256 |
---Но в логах хранится не эта команда, а реально изменяемые данные. при мирроринге передаются честные транзакции, поэтому построение индексов на совести (и памяти) принимаюшей стороны. 6Г - у меня на виртуальной тестовой машине на ноубуке больше |
||
7 окт 15, 19:27 [18249137] Ответить | Цитировать Сообщить модератору |
andrey odegov Member Откуда: Сообщений: 473 |
а как в это время ведет себя журнал транзакций на зеркале (dbcc loginfo)? |
8 окт 15, 09:24 [18250639] Ответить | Цитировать Сообщить модератору |
andrey odegov Member Откуда: Сообщений: 473 |
что в счетчиках производительности mirroring-а? ps: здесь-как мониторить mirroring. |
8 окт 15, 17:00 [18254316] Ответить | Цитировать Сообщить модератору |
Саша235 Member Откуда: Сообщений: 6 |
Спасибо за инфу, что принимающая сторона тоже строит индексы. Про 6Гб - я тоже могу взять больше, но считал что упор не в этом, да и я на договоре pay as you go. Чем больше возьму тем больше придется платить. |
||||
12 окт 15, 18:48 [18269182] Ответить | Цитировать Сообщить модератору |
Саша235 Member Откуда: Сообщений: 6 |
Да, я смотрю эти счетчики, они зануляются. Log bytes received/sec и подобные. |
||
12 окт 15, 18:54 [18269197] Ответить | Цитировать Сообщить модератору |
Саша235 Member Откуда: Сообщений: 6 |
Вопрос решен. Испросил у начальства готовность платить больше контрагенту, добавил памяти на ВМ приемнике до 12Гб и проблема ушла. До выходных уже сделал костыль, который делает рестарты сервиса скуля приемника и resume мирроринга, но он в выходные ни разу не сработал - мирроринг не порвался и костыль спал. Спасибо всем откликнувшимся. |
12 окт 15, 19:00 [18269211] Ответить | Цитировать Сообщить модератору |
churupaha Member Откуда: Краснодар Сообщений: 1015 |
ввели человека в заблуждение
все верно. именно они и накатываются. потому нельзя mirroring при bulk logged, например. вот картинка. слева и справа tranlog'и primary и mirror соответственно К сообщению приложен файл. Размер - 122Kb |
||||
12 окт 15, 19:39 [18269333] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |