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

Откуда: Ростов-на-Дону
Сообщений: 315
Имеется рабочая база (бухгалтерия, логистика, производство никаких космических сверхзадач) на 150 одновременных пользователей на базе Navision 3.7.

Microsoft SQL Server 2000 - 8.00.2066 (Intel X86) May 11 2012 18:41:14 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Windows Server 2003 R2 Enterprise x64 Edition SP2

Процессор Xeon L5630 (16 физических ядер по 2.1 ГГц)

Память 64 Гб. Из нее отдано под SQL Server : Memory Manager Total Server Memory (KB) 63.577.091. Для ОС доступно из диспетчера задач как минимум 1 Гб.

Жестких дисков SAS 15K более 25-ти в RAID10.

Год назад рабочая база мигрировала на этот сервер с практически аналогичного сервера, только с 32-мя Гб памяти.
После этого периодически в хаотичном порядке стала появляться у пользователей ошибка

1204,"HY000",[Microsoft][ODBC SQL Server Driver][SQL Server]The SQL Server cannot obtain a LOCK resource at this time. Rerun your statement when there are fewer active users or ask the system administrator to check the SQL Server lock and memory configuration.

Ранее эта ошибка не появлялась.

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

Нам необходимо решить эту проблему. Для ее решения мы готовы провести совместные (по необходимости) замеры, анализы, сбор информации. Если у Вас есть реальный опыт и план по решению таких проблем - готовы к взаимовыгодному сотрудничеству. Перейти на более новую версию Navision нет финансовой возможности, а эта версия работает только на MS SQL Server 2000 и Windows 2003. 64 Гб RAM потолок.
Если мы можем опубликовать какую-то необходимую информацию пишите выложим.
Если необходима почта - в профиле.
10 фев 16, 17:38    [18800665]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Что вернет
exec sp_configure 'locks'
?
10 фев 16, 18:01    [18800832]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Konst_One
Member

Откуда:
Сообщений: 11568
https://support.microsoft.com/ru-ru/kb/274750
10 фев 16, 18:03    [18800847]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
locks min 5000 max 2147483647 config_value 5000000 run_value 5000000
10 фев 16, 18:06    [18800869]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Konst_One
https://support.microsoft.com/ru-ru/kb/274750


Что касается настройки памяти, AWE и т.п. на наш взгляд все корректно. Если что-то нужно конкретно озвучить - пишите - озвучим!
10 фев 16, 18:08    [18800878]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
exec sp_configure 'min server memory'
exec sp_configure 'max server memory'

min server memory (MB)
min 0 max 2147483647 config 40000 run 40000

max server memory (MB)
min 4 max 2147483647 config 62000 run 62000
10 фев 16, 18:10    [18800898]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
Kaktus_
locks min 5000 max 2147483647 config_value 5000000 run_value 5000000

сами ограничили, сами огребли.
даже наши экспериментаторы до такого не дошли,
а уж все опции потрогали и переделали...
10 фев 16, 18:11    [18800901]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
o-o
Kaktus_
locks min 5000 max 2147483647 config_value 5000000 run_value 5000000

сами ограничили, сами огребли.
даже наши экспериментаторы до такого не дошли,
а уж все опции потрогали и переделали...


Да этот вариант родился в попытках сделать невозможное при отсутствии влияние логичных вариантов на ошибку 1204. Что предлагаете для нашей ситуации? И что еще можно посмотреть? Если мы уже это пробовали - так и напишем.
10 фев 16, 18:23    [18800957]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
нет, ну если ошибка была и *до этого*, то не знаю.
но если ограничить, то по достижении заветного числа логично вместо запрашиваемого лока
получить Rerun your statement when there are fewer active users
10 фев 16, 18:26    [18800968]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Да, ошибка была и до этого. Поэтому крутили динамический и статический пулл на разных значениях. Ничего не помогает. Может на день затихнуть и потом опять начаться. Логики не наблюдаем. Хотя возможно она есть и это не просто баг.
10 фев 16, 18:30    [18800982]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
а может, у вас кто-нибудь запретил lock escalation?
есть флаги
1211 – Disables Lock Escalation completely – allows to use 60% of the allocated memory – if 60% of memory is used and more locking is needed you will get an out-of-memory error.
1224 – Disables Lock Escalation until the memory threshold of 40% allocated memory is reached – after that Lock Escalation is enabled.
есть табличная опция,
вот тут все расписано:
Disable Lock Escalation in SQL Server
10 фев 16, 18:32    [18800992]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Crimean
Member

Откуда:
Сообщений: 13147
памяти у вас _доступной_ мало. убегать надо от 2000. да, знаю, "ваш кэп" :(
а оно точно только под 2000 запускается?
10 фев 16, 18:34    [18801003]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Kaktus_
Microsoft SQL Server 2000 - 8.00.2066 (Intel X86)

А откуда выбор именно этой версии? Обычно ставят последний сервис-пак - это 8.0.2039, либо последний сервис-пак с последним куммулятивным апдейтом - это 8.00.2305, а у вас какая то промежуточная версия.
10 фев 16, 18:46    [18801075]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Опыт, есть. Пишите на личку - может и поможем. Бесплатный совет - посмотрел бы на счетчики работы с памятью, также объем незакрытых транзакций. Разумеется отключение эскалации посмотрел и т.п.
10 фев 16, 20:46    [18801543]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
o-o
а может, у вас кто-нибудь запретил lock escalation?
есть флаги
1211 – Disables Lock Escalation completely – allows to use 60% of the allocated memory – if 60% of memory is used and more locking is needed you will get an out-of-memory error.
1224 – Disables Lock Escalation until the memory threshold of 40% allocated memory is reached – after that Lock Escalation is enabled.
есть табличная опция,
вот тут все расписано:
Disable Lock Escalation in SQL Server


Перепроверил. Правой клавишей по серверу в EM в Startup Parameters пусто, в Администрирование / Службы / Параметры запуска пусто.
11 фев 16, 08:17    [18802384]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Crimean
памяти у вас _доступной_ мало. убегать надо от 2000. да, знаю, "ваш кэп" :(
а оно точно только под 2000 запускается?


К прискорбию только 2000-ый. А чтобы было еще прискорбней при попытке тестового перевода нашей учетной системы на Windows 2008, SQL 2005, NAV4.0 - наблюдаем общее падение производительности в полтора-два раза (после раскочегаривания БД и т.п. ес-сно).
11 фев 16, 08:20    [18802390]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
Minamoto
Kaktus_
Microsoft SQL Server 2000 - 8.00.2066 (Intel X86)

А откуда выбор именно этой версии? Обычно ставят последний сервис-пак - это 8.0.2039, либо последний сервис-пак с последним куммулятивным апдейтом - это 8.00.2305, а у вас какая то промежуточная версия.


Спасибо за информацию. Сейчас посмотрим.
11 фев 16, 08:20    [18802391]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
Kaktus_
Member

Откуда: Ростов-на-Дону
Сообщений: 315
МуМу
Опыт, есть. Пишите на личку - может и поможем. Бесплатный совет - посмотрел бы на счетчики работы с памятью, также объем незакрытых транзакций. Разумеется отключение эскалации посмотрел и т.п.


Спасибо, контакты в личке увидел!
11 фев 16, 08:23    [18802393]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
Не хочу вас расстраивать, уважаемый, но я плюсую к Crimean. Боюсь, ваше x86 не спасет даже МуМу.
Читаю книгу Delaney вообще независимо от этой темы, и ровно сегодня мне попалась вот такая фраза
Delaney
When sql server ends up using more than 24% of its buffer pool
(excluding awe memory) to keep track of locks acquired and lock requests waiting ,
it will choose any session holding locks and escalate its fine-grained (row or page) locks into a table lock.

Это наводит на мысль, что локи он не может хранить в awe memory, и не станет под них отводить более 24% обычной памяти. Вы этот лимит исчерпали, даже со всей возможной эскалацией.
Сугубое IMHO.
Книга:
SQL ServerConcurrency
Locking, Blocking and Row Versioning
By Kalen Delaney
11 фев 16, 09:49    [18802652]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Есть у нас подходы как запустить приложение с закрытым кодом вместо 2000 к примеру на 2012-ом MSSQL. Но в вашем случае думаю все гораздо проще, можно отделаться простым аудитом и немного оптимизировать процессы которые генерируют большое количество блокировок и т.п.
11 фев 16, 10:23    [18802821]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
Да несомненно.
Все просто, а сервер и не догадался сэскалировать, когда "нагенерировал большое количество блокировок".
Они ему опцию серверную поменяли, чтоб раньше эскалировал, но все равно нету памяти под все их локи.
Ладно, вы только не забудьте ут похвастаться успехами, нам всем в нынешней жизни так не хватает чуда.
11 фев 16, 10:33    [18802858]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
кстати, ТС, если вы тут нечасто бываете,
вас необходимо предупредить:
у МуМу понятие "эскалация" не совпадает с тем,
что в этот термин вкладывает MS.
вот тут хотя бы Mind сделал перевод его термина: 18130294
а вот тут 18284014 мне так и не удалось найти хоть какую-то эскалацию вообще
11 фев 16, 10:45    [18802930]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Ну насчет термина "эскалация" я свою позицию ранее пояснил. Сугубо философский вопрос:) В данном контексте в "эскалацию" я вкладываю смысл в классическом понимании от MSSQL. Есть более сложный подход с возможностью подмены запросов на лету и т.п.(так например 1С 7.7. переводится на 2012) Но мне кажется в данном случае анализ функционала небольшой провести, может в каком регламенте транзакцию можно закрывать порциями сразу а она не закрывается(типа перепроведения документов, бухгалтера это любят) , может еще чего. С учетом того что система раньше работала а сейчас периодически возникают такие ошибки - уверен выход есть!
11 фев 16, 10:56    [18802998]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
o-o
Guest
МуМу
С учетом того что система раньше работала а сейчас...

вообще-то принцип достижения любого лимита таков:
сначала работает, а потом бац и упрешься.
потребностей больше, а ресурсы все те же.
или вы считаете, что объем данных не растет?
универсальное решение конечно есть:
не храните, граждане, архивное добро.
удаляйте/складируйте неактуальное в другом месте.
поддерживайте объем инфо в прежних размерах и все будет как раньше
11 фев 16, 11:05    [18803053]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с LOCK-блокировками.  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Разумеется причиной могли стать функциональные изменения, увеличившийся объем БД, увеличивающиеся инф. потоки. Но как правило все тривиальней. Что бы столько памяти отъесть под обслуживание блокировок это нужно постараться. Нет, конечно иногда приходится спорить что к примеру 30 млн изменений в одной атомарной транзакции - ну никак нельзя разнести так как не позволяет бизнес логика.(потом всегда оказывается что можно) В любом случае будет обращение - будет и пища для размышлений.
11 фев 16, 11:17    [18803139]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить