none
Расчёт необходимого объёма оперативной памяти для сервера с SQL Server RRS feed

  • Вопрос

  • Здравствуйте! На данный момент имеется сервер с СУБД MS SQL Server 2008 R2, которая используется для баз 1С. После расширения компании были созданы новые базы данных для подразделений в результате чего возросла нагрузка на сервер БД и время от времени стали возникать ошибки СУБД. Максимальный размер памяти сервера выставлен в 90% от доступной физической памяти сервера и процесс sqlservr.exe, как правило, занимает его полностью. Стоит вопрос о покупке дополнительной оперативной памяти в результате чего возник вопрос - каким образом можно рассчитать оптимальный объём оперативной памяти для сервера с SQL Server? На что стоит опираться при расчёте этого параметра - на совокупный размер активных баз данных, на число активных пользователей или на что-то ещё? Есть best practices от Microsoft по этому поводу?

    13 февраля 2019 г. 10:49

Ответы

  • К сожалению, на данный вопрос невозможно ответить точно по ряду причин. Во-первых, слишком мало вводной информации. Мы не знаем ни параметры сервера (ЦПУ, текущее количество ОЗУ, дисковая подсистема, ОС, виртуальный/физический), ни характера возникающих ошибок, ни версии 1С, ни её конфигурации (опять же, это что-то стандартное, либо кастомизированное, либо самописное), ни количества одновременно работающих пользователей, ни характера их работы.

    Во-вторых, действительно, даже отталкиваясь от вышеописанного, сложно понимать, как именно работают сотрудники, какую нагрузку они создают в плане количества запросов в секунду, дисковых очередей и объёма передаваемых данных при чтении записи в разрезе файлов.

    По-хорошему нужно создавать Performance Data Collection и смотреть все ключевые показатели, дальше делать выводы. Я бы обратил внимание в первую очередь на Page Life Expectancy и Page File Usage. Пособирать недельку бы, а дальше уже что-то решать.

    Т.е. если Lock Pages in Memory не включён (а он скорее всего не включён) то смотрим на размер файла подкачки, на сколько он используется в пиковую нагрузку и добавляем пропорциональное количество ОЗУ.

    Что касается Page Life Expectancy, то можно попытаться сделать пропорцию, где неизвестным будет количество ОЗУ, при котором при делении его на четыре PLE > 300.

    Опять же, за такие советы меня многоуважаемое сообщество может начать закидывать палками, потому что по-хорошему тут всё-таки нужен детальный анализ системы, а вышеописанное хоть и не является гаданием на кофейной гуще, но гарантий никаких не даёт.

    Я бы также порекомендовал посмотреть сколько и какого объёма планок ОЗУ установлено на данный момент. Сколько слотов свободно. Почитать документацию на материнскую плату. Зачастую, чтобы обеспечить максимально возможную пропускную способность, модули ОЗУ устанавливается парами, есть ограничения по объёму и по различным комбинациям. Возможно, Вы и так уже связаны в своё выборе.

    Ну и да простит меня публика, но всё же сообщу, что на текущий момент среднее значение количества ОЗУ на серверах баз данных под задачи 1С это 64-256 ГБ. Мой личный опыт по предприятиям среднего размера. Выборка вполне может быть не репрезентативной.  

    • Помечено в качестве ответа Alex Nightingale 19 февраля 2019 г. 8:01
    14 февраля 2019 г. 21:43

Все ответы

  • Тут best practices не от MS нужен, а непосредственно от 1С, который и будет SQL нагружать.

    Почитайте топик - https://forum.infostart.ru/forum86/topic132669/

    13 февраля 2019 г. 11:31
  • https://wiki.it-kb.ru/1c/setting-up-microsoft-sql-server-for-1c-enterprise-8-3/maximum-and-minimum-server-memory-sql-server-options - почитайте здесь - достаточно хорошо написано

    С уважением, Новиков Сергей

    13 февраля 2019 г. 11:36
  • Там речь идёт о принципе расчёта параметра "Maximum server memory" для SQL Server, меня же интересует вопрос, как рассчитать объём оперативной памяти для сервера, где крутится SQL Server
    14 февраля 2019 г. 10:02
  • Как я понял, в обсуждении пришли к выводу, что объём оперативной памяти для сервера с SQL Server рассчитать невозможно, так как "всё зависит от самого запроса", но ведь при планировании покупки сервера для SQL Server каким то образом производится расчёт необходимого объёма оперативной памяти... Также в той теме есть предложение делать расчёт как 100 МБ на каждого пользователя (если пользователей более 50) - насколько это утверждение соответствует истине?
    14 февраля 2019 г. 10:23
  • К сожалению, на данный вопрос невозможно ответить точно по ряду причин. Во-первых, слишком мало вводной информации. Мы не знаем ни параметры сервера (ЦПУ, текущее количество ОЗУ, дисковая подсистема, ОС, виртуальный/физический), ни характера возникающих ошибок, ни версии 1С, ни её конфигурации (опять же, это что-то стандартное, либо кастомизированное, либо самописное), ни количества одновременно работающих пользователей, ни характера их работы.

    Во-вторых, действительно, даже отталкиваясь от вышеописанного, сложно понимать, как именно работают сотрудники, какую нагрузку они создают в плане количества запросов в секунду, дисковых очередей и объёма передаваемых данных при чтении записи в разрезе файлов.

    По-хорошему нужно создавать Performance Data Collection и смотреть все ключевые показатели, дальше делать выводы. Я бы обратил внимание в первую очередь на Page Life Expectancy и Page File Usage. Пособирать недельку бы, а дальше уже что-то решать.

    Т.е. если Lock Pages in Memory не включён (а он скорее всего не включён) то смотрим на размер файла подкачки, на сколько он используется в пиковую нагрузку и добавляем пропорциональное количество ОЗУ.

    Что касается Page Life Expectancy, то можно попытаться сделать пропорцию, где неизвестным будет количество ОЗУ, при котором при делении его на четыре PLE > 300.

    Опять же, за такие советы меня многоуважаемое сообщество может начать закидывать палками, потому что по-хорошему тут всё-таки нужен детальный анализ системы, а вышеописанное хоть и не является гаданием на кофейной гуще, но гарантий никаких не даёт.

    Я бы также порекомендовал посмотреть сколько и какого объёма планок ОЗУ установлено на данный момент. Сколько слотов свободно. Почитать документацию на материнскую плату. Зачастую, чтобы обеспечить максимально возможную пропускную способность, модули ОЗУ устанавливается парами, есть ограничения по объёму и по различным комбинациям. Возможно, Вы и так уже связаны в своё выборе.

    Ну и да простит меня публика, но всё же сообщу, что на текущий момент среднее значение количества ОЗУ на серверах баз данных под задачи 1С это 64-256 ГБ. Мой личный опыт по предприятиям среднего размера. Выборка вполне может быть не репрезентативной.  

    • Помечено в качестве ответа Alex Nightingale 19 февраля 2019 г. 8:01
    14 февраля 2019 г. 21:43