SQL Server 2005: для запуску цього запиту недостатньо системної пам'яті


13

Один з наших SQL-серверів, який працює стабільно протягом досить тривалого часу (років), останнім часом викидає недостатню кількість помилок пам'яті. З журналу подій програми ми бачимо:

Ідентифікатор події: 701

Опис: Для запуску цього запиту недостатньо системної пам'яті.

Наша команда, яка управляє цим сервером, складається в основному розробниками, які подвоюють обов'язки sysadmin. Однак наша основна експертиза - це розвиток. Зважаючи на це, ми втрачаємо проблеми щодо вирішення проблем. Ми шукали форуми та інше, і не знайшли нічого, що відповідає

Отож, ще кілька деталей, які допоможуть у вирішенні проблем:

  • Наша мінімальна пам'ять сервера встановлена ​​на 0.
  • Наша максимальна пам'ять сервера встановлена ​​на 2000.
  • Загальна фізична пам'ять складає 3,325,85 Мб (з sysinfo).
  • Загальна віртуальна пам'ять - 7,10 Гб (від sysinfo).
  • Ми не використовували AWE для розподілу пам’яті, але тепер ми бачимо, чи має це значення.
  • Цю помилку було викинуто роботою, яка створювала резервну копію журналу транзакцій, а не запит.
  • У нас багато пов'язаних серверів. З іншого боку, типи RDBMS - це системи SQL Server (2005 та 2000 рр.), Oracle 10g та ОСІ PI.
  • Він переривчастий у цій точці. Ми не можемо співвідносити будь-який час або подію з помилками.
  • Звичайно, перезавантаження, здається, на деякий час зникне, що має сенс через характер повідомлення про помилку.
  • Цей сервер тричі працює як сервер додатків (пара служб Windows) і веб-сервер, а також сервер баз даних.

Редагувати:

Ми на SP3. Більшість знайдених нами публікацій були до SP1, що не стосується нас.

SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

повертає

9.00.4035.00 SP3 Standard Edition


Чи можете ви переглянути журнал помилок SQL Server, оскільки щодо цієї помилки можуть бути додаткові деталі.
Джон Сансон

Відповіді:


4

Я б також запропонував використовувати параметр запуску -g. Це, здається, працює для більшості людей і, ймовірно, буде працювати і для вас. Моє єдине занепокоєння було б, щоб основне питання не було вирішене. Наприклад, якщо відбувається витік пам'яті через зв’язаний сервер, а MTL збільшено до 512Mb, чи це просто довший період між проблемами пам'яті? Я не знаю відповіді на це, але я схильний погодитися з UndertheFold в тому, що парфмон може бути гарним початком.


7

Повідомлення про помилку "Не вистачає системної пам'яті для запуску цього запиту." Мається на увазі, що віртуальний адресний простір (VAS) недоступний і не є пам'яттю в звичайному сенсі, тобто в просторі процесу SQL Server.

Зважаючи на те, що на цьому сервері ви працюєте лише з 3 Гб, а SQL серверу призначено до 2 ГБ, це означає, що ОС і ще важливіше, що все інше на коробці має менше 1 Гб для гри. Це не ціла багато пам’яті.

Якщо ця проблема насправді є результатом витоку пам’яті, то саме VAS використовується поза процесом простору SQL Server (memToLeave).

Я б запропонував використовувати параметр запуску -g, щоб призначити більше пам'яті для частини memToLeave.

Додаткову інформацію див. У наступній статті:

http://www.johnsansom.com/sql-server-memory-configuration-determining-memtoleave-settings/

Ви також можете зменшити налаштування максимальної пам'яті SQL Server, але я б це зробив в крайньому випадку.


Гарна стаття. Дякуємо, що також написали його! У наших журналах SQL є декілька додатків AppDomains. У нас є лише 2 CLR зберігаються процедури, і вони в основному просто отримують і передають дані в / з веб-сервісу. Дивно здається, що ці 2 зберігаються CLR процедури використовували б занадто багато VAS поза коробкою.
Аарон Даніельс

Ласкаво просимо. Як ви можете знати, розподіл за замовчуванням для memToLeave становить лише 256 Мб. Це досить невелика пісочниця для ваших AppDomains, усіх кодів CLR / керованого коду, запитів на пов'язаний сервер, SSIS тощо, особливо якщо ви використовуєте всю наявну пам'ять на сервері. Я б запропонував подвоїти його до 512 МБ за допомогою параметра -g запуску.
Джон Сансон

1

Це може бути пов’язано з витоком пам'яті пов'язаного драйвера сервера, відповідно до теми форуму :

Далі - це те, що нам розповіла Microsoft.

Очевидно, обробка даних за допомогою пов'язаного сервера, зокрема, драйвер fox pro викликає витік пам'яті, який накопичується з часом.


0

Цей сервер тричі працює як сервер додатків (пара служб Windows) і веб-сервер, а також сервер баз даних.

Я встановив би вашу мінімальну пам'ять - цілком можливо, що ці інші процеси "крадуть" пам'ять з SQL

Ви можете запустити журнал лічильників, використовуючи perfmon, щоб підтвердити це та / або дати собі більше інформації, щоб визначити, що таке справжня проблема.


0

Довідка взята з цього блогу!

Існують різні альтернативи для вирішення цієї проблеми.

По-перше, перевірте свої параметри SQL Server на "хв. Пам'яті сервера" та "макс. Пам'яті сервера". Якщо ви виявили дуже невелику різницю в обох значеннях, збільште "максимальну пам'ять сервера".

По-друге, з’ясували довго працюючі запити з інформацією про використання пам'яті, і якщо цей запит знаходиться в режимі очікування, будь ласка, перевірте і вбийте цей процес. Оптимізація продуктивності бази даних є головною справою для використання пам'яті.

По-третє, з'ясовано використання індексів для тривалого запуску запитів, оскільки без належної індексації вашій системі збільшуються введення-виведення системи DISK і це безпосередньо впливає на вашу пам'ять.

По-четверте, перевірити розмір файлу підкачки віртуальної пам’яті та збільшити розмір цього файлу.

По-п’яте, Перевірте розмір "мінімальної пам'яті на запит", вона за замовчуванням становить 1024 КБ, але в рідкісних ситуаціях ви можете зменшити розмір цього параметра. Власне, це не рекомендується, але ви можете спробувати.

По-шосте, спробуйте виконати цю команду DBCC, і знову це не доцільно, оскільки це може вплинути на загальну продуктивність сервера. Але ви можете спробувати це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.