Sql server windows nt 64 жрет память что это

Hi,
  • Remove From My Forums
  • Question

  • Hi,

    I’m using SQL Server Express 2012. I have database with 200 Mb actually.

    So, I want to know If is it normal
    if the process (app) ‘SQL Server Windows NT — 64 Bit’ use 400 MB from Ram (at all) and CPU up to 46% some times ?

    If my Server receive DDOS Attak on the TCP port of database ? How can I detect ? How can I solve it.

    Thanks

    • Edited by

      Wednesday, February 11, 2015 2:25 PM

Answers

  • Hi nadjibnet,

    SQL Server Windows NT -64 Bit is known as sqlservr.exe process, it is normal that SQL Server consumes as much memory as possible since SQL Server likes to cache data in memory to speed up access. You might have long running queries on SQL Server. Do you
    find any performance issues?

    If SQL Server is not installed on a dedicate production machine and you have other applications on the machine, you could limit the memory usage by
    configuring Max Server Memory according to your situation.

    In addition, about how to detect DDOS attack and block it, you could refer to the following article:

    https://sulich.wordpress.com/2012/06/27/detecting-ddos-attack-in-windows/. I suggest you to post the questions in the

    Windows Server forums. It is appropriate and more experts will assist you.

    Regards,
    Michelle Li

    • Edited by
      Michelle Li
      Thursday, February 12, 2015 7:25 AM
    • Marked as answer by
      nadjibnet
      Thursday, February 12, 2015 10:00 AM

  • Remove From My Forums
  • Question

  • Hi,

    I’m using SQL Server Express 2012. I have database with 200 Mb actually.

    So, I want to know If is it normal
    if the process (app) ‘SQL Server Windows NT — 64 Bit’ use 400 MB from Ram (at all) and CPU up to 46% some times ?

    If my Server receive DDOS Attak on the TCP port of database ? How can I detect ? How can I solve it.

    Thanks

    • Edited by

      Wednesday, February 11, 2015 2:25 PM

Answers

  • Hi nadjibnet,

    SQL Server Windows NT -64 Bit is known as sqlservr.exe process, it is normal that SQL Server consumes as much memory as possible since SQL Server likes to cache data in memory to speed up access. You might have long running queries on SQL Server. Do you
    find any performance issues?

    If SQL Server is not installed on a dedicate production machine and you have other applications on the machine, you could limit the memory usage by
    configuring Max Server Memory according to your situation.

    In addition, about how to detect DDOS attack and block it, you could refer to the following article:

    https://sulich.wordpress.com/2012/06/27/detecting-ddos-attack-in-windows/. I suggest you to post the questions in the

    Windows Server forums. It is appropriate and more experts will assist you.

    Regards,
    Michelle Li

    • Edited by
      Michelle Li
      Thursday, February 12, 2015 7:25 AM
    • Marked as answer by
      nadjibnet
      Thursday, February 12, 2015 10:00 AM

  • Remove From My Forums
  • Question

  • Hi there,

    On our newly configured SQL Server Windows NT 64 bit — very high memory usage show up.

    We have to reboot it to get it to normal (like to 10% RAM) — RAM usage grows continuously — and in about 18 hours it reaches 95% and our website slows down by a great margin. We reboot the server to get it back to normal and so on.

    During such outage I ran —- Select * from sys.dm_exec_requests —— and result is

    here.

    If I can provide any more information please let me know.

    Thanks so much for help.

Answers

  • Issue was resolved by setting up SIMPLE Recovery mode for all dbs.

    Thanks so much all.

    • Marked as answer by

      Thursday, December 3, 2015 1:07 AM

  • Remove From My Forums
  • Question

  • Hi,

    I’m using SQL Server Express 2012. I have database with 200 Mb actually.

    So, I want to know If is it normal
    if the process (app) ‘SQL Server Windows NT — 64 Bit’ use 400 MB from Ram (at all) and CPU up to 46% some times ?

    If my Server receive DDOS Attak on the TCP port of database ? How can I detect ? How can I solve it.

    Thanks

    • Edited by

      Wednesday, February 11, 2015 2:25 PM

Answers

  • Hi nadjibnet,

    SQL Server Windows NT -64 Bit is known as sqlservr.exe process, it is normal that SQL Server consumes as much memory as possible since SQL Server likes to cache data in memory to speed up access. You might have long running queries on SQL Server. Do you
    find any performance issues?

    If SQL Server is not installed on a dedicate production machine and you have other applications on the machine, you could limit the memory usage by
    configuring Max Server Memory according to your situation.

    In addition, about how to detect DDOS attack and block it, you could refer to the following article:

    https://sulich.wordpress.com/2012/06/27/detecting-ddos-attack-in-windows/. I suggest you to post the questions in the

    Windows Server forums. It is appropriate and more experts will assist you.

    Regards,
    Michelle Li

    • Edited by
      Michelle Li
      Thursday, February 12, 2015 7:25 AM
    • Marked as answer by
      nadjibnet
      Thursday, February 12, 2015 10:00 AM

#sql-server-2019

Вопрос:

Вчера я просматривал некоторые сценарии и заметки из класса и заметил, что запросы были намного медленнее. Запросы, которые раньше занимали 0 мс процессорного времени и 10 мс истекшего времени, занимали более 10 секунд. Диспетчер задач показал, что SQL Server Windows NT — 64 разрядной версии работает и использует 5 ГБ из 8 ГБ моей памяти. Я перестал запускать запросы, но это продолжалось в течение нескольких часов, пока не сократилось до 2 ГБ, и продолжалось до тех пор, пока я не выключил его около 10 вечера. Этим утром SQL Server Windows NT — 64 разрядной версии использовал несколько сотен МБ памяти, пока я не запустил хранимую процедуру. Как вы можете видеть на картинке, он увеличил объем памяти более чем на 4 ГБ и остался на нем. Я точно знаю, что такое часто случается, но никогда не думал, что это может быть вызвано чем-то, что я запустил. Если я завершу задание, я потеряю соединение. Если я перезагрузлю компьютер, он тоже перезагрузится, я проверял пару раз. Что происходит на самом деле и что мне следует делать? Снимок экрана диспетчера задач

Комментарии:

1. SQL Server использует всю доступную память, которую он может получить по дизайну . Вы можете изменить это в разделе SSMS > Свойства сервера >> Память.

2. Какова реальная проблема, которую вы пытаетесь решить? Похоже, это рабочий стол/рабочая станция, а не выделенный SQL-сервер? Рекомендуется всегда устанавливать максимальный объем памяти для SQL Server — эмпирическое правило на 8-10% меньше общего объема оперативной памяти на выделенном сервере и больше на рабочем столе или сервере общих ресурсов.

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

4. Это делало все остальные запросы такими медленными. А еще я хотел понять, что на самом деле происходит и почему. Похоже, вы все предлагаете мне изменить максимальную память сервера, которую я никогда не менял, так что по умолчанию она намного больше, чем у меня есть. Поэтому я изменил его на 3 ГБ, запустил ту же хранимую процедуру и выполнил. SQL Server использовал около 700 МБ памяти и увеличил ее до 2,85 ГБ. Так что это хорошо. Теперь он остается на этом уровне в течение длительного времени. Как мне снизить его до нормального уровня? Не все, но некоторые другие запросы выполняются дольше.

5. @gsong Установите разумный максимум использования памяти в свойствах сервера, а затем перезапустите службу SQL Server. Существуют способы вернуть память SQL Server обратно в ОС без перезагрузки, но они ненадежны и предназначены для производственного использования, в то время как перезапуск службы на вашей рабочей станции является наиболее простым решением.

SQL Server. Основы анализа производительности памяти

Источник

Перечень наиболее часто встречающихся проблем связанных с памятью:

  • SQL Server “съел” всю память (или очень много), что начало “угнетать” ОС и приложения работающие на ней.
  • Вы установили ограничения на память потребляемую SQL Server и ему стало не хватать выделенной памяти.
  • Какое-либо приложение потребило слишком много памяти и SQL Server-у стало не хватать выделенной памяти
  • “Перекос” в потреблении памяти каким-либо компонентом SQL Server, что стало причиной “угнетения” других компонентов SQL Server.

Первые три причины называются внешним “нажимом” на память и методика их анализа почти одинакова. Третья же причина называется “внутренним” нажимом на память и методики ее анализа совершенно другие.

Итак начнем рассмотрение первой причины – “SQL Server “съел” всю (или очень много) память, что начало угнетать ОС и приложения работающие на ней.”

В качестве ограничения накладываемого на рассмотрение – в блоге мы будем рассматривать только 64-битовую версию SQL Server и ОС, поскольку 32-битовых остается все меньше и меньше.

Для начала надо установить факт, что ОС действительно не хватает памяти и эту память потребил SQL Server. Выполнить это можно посмотрев счетчик Memory: Available Bytes. Он показывает сколько памяти осталось у ОС для распределения приложениям и внутреннего использования. Возникает справедливый вопрос:”Каким образом приложение может потребить много памяти и угнетать ОС?”. Причин тому может быть несколько:

  • Утечка памяти в приложении или драйвере, особенно утечка невыгружаемого пула.
  • Установка завышенного значения параметра “max server memory” в свойствах SQL Server и  права “Lock Pages in Memory” для учетной записи от которой работает SQL Server.

Во всех остальных случаях ОС способна сама решать вопросы распределения памяти на основе заложенных алгоритмов. (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366525(v=vs.85).aspx, http://blogs.msdn.com/b/tims/archive/2010/10/28/pdc10-mysteries-of-windows-memory-management-revealed-part-one.aspx, http://blogs.technet.com/b/askperf/archive/2007/02/23/memory-management-101.aspx, http://msdn.microsoft.com/en-us/library/windows/hardware/gg463344.aspx).

У нас (Microsoft) есть принятая норма на остаток памяти который должен оставаться доступным для распределения ОС. Эта норма составляет 5% от объема установленного RAM, т.е. в свободном распределении у ОС должно остаться не менее 5% от общего объема RAM установленного на сервере. И как бы это число не казалось большим (особенно при больших объемах установленной памяти), лучше этого правила придерживаться.
Что будет предпринимать ОС, когда приложения потребят слишком много оперативной памяти? При достижении порога Memory: Available Bytes в 100…50 MB Windows включит агрессивный сброс (trimming) рабочих наборов процессов, включая системные драйверы, что тут же приведет к резкому снижению производительности всех компонентов ОС. В данной статье мы не будем рассматривать эти вопросы, возможно мы рассмотрим их в будущем.

Каким образом рассчитать правильное значение “max server memory”?

Здесь есть два случая:

  • Некластеризованный SQL Server, либо кластеризованный SQL Server в режиме Актив/Пассив .
  • Кластеризованный SQL Server работающий в режиме Актив/Актив.

Расчет памяти для некластеризованного, либо кластеризованного SQL Server работающего в режиме Актив/Пассив

  1. Остаток для ОС – 5%. В нашем случае это около 25 GB (500*5%).
  2. Память под ядро SQL Server (различные *.exe, *.dll, *ocx и пр. модули), SQL heap, CLR. Обычно это до 500 MB, хотя за счет CLR это может быть и больше.
  3. Память под кэши “Worker thread”, рассчитываемая по формуле (512+(NumCpu-4)*16)*2 MB. В нашем случае это (512+(64-4)*16)* 2MB = 2944 MB (около 2.7 GB).
  4. Итого под “max server memory” остается:  500 – 25 – 0.5 – 2.7 = 471.2 GB. Т.е. размер Буферного пула (при таком значении “max server memory”) может вырасти до 471 GB.
  5. Для версии SQL 2012 и далее “max server memory” включает в себя SQL heap и частично CLR.

Особенно актуален это расчет, если вы используете “Lock Pages In Memory” В этом случае завысив это число или оставив его по умолчанию (что обозначает – любой объем) вы можете поставить ОС в довольно неприятное положения, которое приведет к агрессивному триммированию рабочих наборов и, как следствие, резкому замедлению работы системы.

Расчет памяти для кластеризованный SQL Server в режиме Актив/Актив.

При расчете необходимо учитывать, что пункты 2, 3 и 4 должны быть удвоены, и при использовании права учетной записи SQL Server “Lock Pages In Memory”, вам необходимо подобрать не только “max server memory”, но и “min server memory”, что бы в случае переката обоих SQL Server на один узел вы не забрали всю память у ОС.

В данном случае на сервере установлено 500 GB оперативной памяти и 5% должно быть около 25 GB. Каким бы большим не казалось это число, но чем больше на сервере процессоров и памяти, тем (как правило) более ресурсоемкие задачи он выполняет и для их решения ему требуются большие ресурсы.

Как видно из рисунка (в данном случае), остаток памяти на сервере составляет около 7 GB, что не соответствует нашим рекомендациям.

Далее нам необходимо понять, имеет ли SQL Server достаточный запас памяти, часть которого можно освободить в пользу ОС. Для ответа на этот вопрос необходимо проанализировать счетчики производительности SQL Server.

Давайте сначала выясним сколько памяти потребил SQL Server. Для этого надо знать, использует или нет SQL Server право учетной записи SQL Server “Lock Page In Memory”, Выяснить это можно из свойств учетной записи, а можно косвенно, через счетчики Performance Monitor. Дело в том, что если право учетной записи SQL Server “Lock Page In Memory” не установлено, то вся (или почти вся) используемая память будет частью рабочего набора процесса sqlservr.exe. Если же это право установлено, то при этом (скрыто) используется механизм AWE (Address Windows Extension) и основная память под Буферный пул будет размещена за пределами процесса sqlservr.exe.

Как видно из рисунка ниже, размер рабочего набора процесса составляет всего около 4 GB, что значительно меньше общего объема потребленной памяти.

Посмотрим, сколько всего памяти использует SQL Server. Он использует 500 857 024 (около 480 GB) для распределения на Буферный пул, Процедурный кэш, кэш Worker Thread и для некоторых не значительных потребителей. А отсюда можно сделать вывод, что в данном случае SQL Server использует “Lock Pages in Memory”.

Далее приступим к поиску ответа на вопрос:”Можно ли отобрать часть памяти у SQL Server, не нанося ему вреда?”

Во первых, давайте проверим какое количество запросов обслуживается из Буферного пула (без выполнения физических чтений). Как мы видим из рисунка ниже по тексту около 100% (точнее 99,972%) запросов выполняются из буферного пула (при пороговом значении данного счетчика не менее 92%), что дает нам надежду на наличие избытка памяти у SQL Server.

Следующим счетчиком, который рекомендуется посмотреть является SQL Server: Page Life Expectancy. Он контролирует время жизни страниц в Буферном пуле. Пороговое значение 300 секунд. В данном случае мы видим среднее значение около 221000, что почти в 700 раз больше порогового. Это укрепляет нас в мысли, что ресурсы есть.

Окончательный ответ нам поможет дать счетчик SQL Server: Lazy Writes/sec, отображающий как часто срабатывает процесс Lazy Writer. Мы знаем, что это процесс активируется тогда, когда у SQL Server заняты около 75% выделенных буферов. Его задача выполнить фиксацию данных и очистить буферы. Для систем имеющих значительный запас памяти этот счетчик должен быть близок к нулю. Как мы видим это так.

Из всего вышесказанного можно сделать вывод: SQL Server имеет достаточный объем памяти и может “поделиться” ей с ОС. Отбирая память у SQL Server (уменьшая “max server memory”) необходимо контролировать выше описанные счетчики и определить тот порог, ниже которого уменьшать объем памяти нельзя.

Like this post? Please share to your friends:
  • Sql server windows nt 64 жрет память windows 10
  • Sql server windows nt 64 bit что это
  • Sql server windows nt 64 bit что за процесс
  • Sql server windows nt 64 bit жрет всю оперативку
  • Sql server windows nt 64 bit грузит процессор