Сколько памяти выделить sql серверу для 1с
1C сервер находится на той же машине, что и SQL.
Всего 8 гиг оперативки.
Сколько памяти надо выделить на SQL?
Как ограничить 1C-сервер, чтобы он не жрал всю оставшуюся память?
Добавить памяти не предлагать? Сервер 64 бита?
(2) да, 64 бита
(0)
для oltp
нормально если попаданий в кэш >= 80%
получается так: в терминальном окне сервера невозможно работать, оно висит. Т.к. часть памяти сожрал SQL, оставшуюся память верно отжирает сервер приложений 1С
(5) разнеси их на разные машины
(5) надеюсь на нем юзеры в терминале не работают?
гига 4 на скуль я думаю. А рпхост может и не будет разрастаться. Или перезапуск процессов настроить.
(7) не работают
(6) бедные мы
(4) как можно смотреть попадания в кэш?
процессор вообще не загружен, терминальное окно висит, оснастки вылетают
(5) Терминал на этом же серваке?
Сколько пользователей и размер базы ?
(13) 4-е пользователя, база 2 гига
Есть подозрения, что расплодившиеся фоновые задания все жрут.
(14) 4-6 гб скулю будет за глаза,
а вообще докупите памяти
она копейки же стоит
Сколько выжрал сам СКУЛЬ ?
(17) ставлю скулю 4 гига, сервер приложений 1С за сутки сжирает всю оставшуюся память
(19)[сервер приложений 1С за сутки сжирает всю оставшуюся память]
перезапуск рабочих процессов не используется по идеологическим причинам ?
поставил минимальный размер памяти SQL сервера 2 гБ, максимальный 4 GB, посмотрю, что будет
(20) чуть позже отпишусь
если база одна на скуле и она весит 2 гб, то 2-3 гб скулю хватит точно )
—
А рпхостам обрезание через перезапуск настроить
+(21) было кем-то установлено 6 ГБ для SQL
(23) как это настроить?
(20) «сервер приложений 1С за сутки сжирает всю оставшуюся память
» — Версия 1С:Предприятие 8.2 (8.2.15.317) или 1С:Предприятие 8.2 (8.2.15.318) .
Лучше не ограничивайте SQL-серверу размер доступной памяти. Он и так себя ведет корректно и не дает системе свалиться в своп. Если другие приложения отхватывают память, то SQL-сервер сам уменьшает свой размер занятой памяти. У вас в конфигурации проблема в 1С-Сервере, который может отожрать всю память и SQL-серверу памяти почти не останется.
Сколько памяти нужно выделить под SQL и сервер 1с приложений?
Всем привет. Не смог найти информацию по моему вопросу. Есть сервер, с MSSQL и с сервером 1с приложений. Сколько нужно выделить памяти (ОЗУ) под SQL и 1с?
Спасибо.
- Вопрос задан более трёх лет назад
- 13562 просмотра
1 комментарий
Простой 1 комментарий

Константин Цветков @tsklab Куратор тега SQL Server
Нужно дополнить: редакция MS SQL (от неё зависит, как ограничено использование памяти), способ подключения с 1С пользователей (толстый/тонкий клиент или терминал).
Решения вопроса 0
Ответы на вопрос 4

MS SQL Server and .NET Developer, DBA
Зависит от того, сколько в среднем в секунду проходит запросов и сколько памяти потребляет каждый запрос. Можно отталкиваться от следующей конфигурации:
1) 8 ядер под скуль-16/32 ГБ ОЗУ скулю+4 ГБ оставьте ОС
2) 16 ядер под скуль-32/64 ГБ ОЗУ скулю+8 ГБ осиавьте ОС
Для 1С выключите многопоточность в свойствах скуля (max dop=1), т к 1С с многопоточностью не дружит
И напомню, что лицензия Standard скуля больше 16 ядер и 128 ГБ ОЗУ не распознает.
Также можно в системных представлениях глянуть потребление памяти скулем. В свойствах скуля есть мин и макс для ОЗУ, выше привел макс, а вот мин сначала выставите в два раза меньше, чем макс, но не менее 8 ГБ (осторожно-там указывается в мб, а не в гб!).
По опыту скажу, что если 1С жрет больше 64 ГБ ОЗУ и 16 ядер мало, а пользователей не 1000+, то проблема в запросах.
П.1 приведенный выше подойдет под количество пользователей до 100 штук, при оптимизации можно конечно и до 500 штук
Меньше 16 ГБ ОЗУ под скуль боевой не советую, т к всякое бывает и пусть будет если что в запас, т к сейчас 16ГБ ОЗУ-это ничто как было 2 года назад 8 ГБ ОЗУ-ничто. Аналогично и про 8 ядер-также минимум советую.
А дальше уже смотрите из ситуации.
Если среда виртуальная, то проблем в расщирении вообще не будет. Если нет, то советую в будущем перейти на виртуальные среды
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

Константин Цветков @tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Если MS SQL сервер сам не ограничивает использование памяти, то можно воспользоваться советом Microsoft SQL Server и сервер 1С.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Системный администратор со стажем.
Сколько памяти нужно выделить под SQL и сервер 1с приложений?
Зависит от нагрузки.
Иногда хватает 4Гб, иногда не хватает 200Гб.
Зависит от размера базы, количества пользователей, и.т.д.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Вариант использования 32 ГБ оперативной памяти, 8 логических процессоров и приблизительно 40 пользователей.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- 1С-Битрикс
- +1 ещё
Как экспортировать товары и заказы из 1С-Битрикс в 1С?
- 1 подписчик
- 18 нояб.
- 23 просмотра
Вики IT-KB
Настройка выделения памяти опциями «Maximum server memory» и «Minimum server memory»

Учитывая то, что требуется отдельный объём ОЗУ для работы самой ОС и инфраструктурных приложений, таких как всевозможные агенты мониторинга и управления, антивирусного ПО и т.п., крайне желательно задавать верхний порог потребления памяти процессом экземпляра SQL Server. В противном случае, при хорошей нагрузке на БД, сервер может со временем вычерпать всю доступную память и нарушить работу других приложений.
Опция Maximum server memory
Принцип расчёта опции Maximum server memory возьмём из статьи Server Memory Server Configuration Options
В общем случае максимальный объём памяти, который можно выдать экземпляру SQL Server рассчитывается так:
Maximum server memory = Всего ОЗУ на сервере — ОЗУ под нужды ОС — ОЗУ под сторонние приложения — ОЗУ SQL Server (накладные расходы экземпляра, выходящие за рамки «Maximum server memory»)
В нашем случае в качестве опорной ОС для SQL Server используется 64-битная Windows Server 2012 R2 Standard с 72GB ОЗУ и 12-core CPU. Проведём расчёт, на базе нашего примера.
Рассчитываем ОЗУ под нужды ОС
У каждой версии ОС есть минимальные требования к ОЗУ, но они более, чем скромные. Есть мнения, что для систем с объёмом ОЗУ более 20GB под ОС нужно резервировать 12.5% общего объёма ОЗУ. На мой субъективный взгляд это избыточный подход, и исходя из имеющейся практики использования Windows Server 2012 R2, полагаю, что для комфортной работы базовой ОС в нашем случае будет более, чем достаточно 4GB ОЗУ.
Рассчитываем ОЗУ под сторонние приложения
Помимо потребностей базовой ОС, на сервере, как правило, имеются приложения инфраструктурной обвязки, такие как всевозможные агенты мониторинга, управления, резервного копирования, антивирусное ПО и т.д. В случае, если сервер 1С:Предприятие планируется установить на одной системе с SQL Server, то нужно учесть величину ОЗУ, необходимую для работы сервера 1С:Предприятия (анализируем суммарное потребление памяти такими процессами, как ragent, rmngr и rphost). В нашем примере 1С на сервере SQL Server нет, а есть только инфраструктурные приложения набора System Center (агенты SCOM/SCCM/SCDPM) и антивирусное ПО. В общей сложности под эти задачи мы зарезервируем 2GB ОЗУ.
Рассчитываем ОЗУ SQL Server
Чтобы рассчитать накладные служебные расходы ОЗУ SQL Server, выходящие за рамки параметра Maximum server memory, воспользуемся формулой из статьи Server Memory Server Configuration Options:
stack size * calculated max worker threads + -g startup parameter (or 256MB by default if -g is not set).
Значение stack size рассчитывается согласно документа Memory Management Architecture Guide. На 64-битной ОС с 64-битной SQL Server stack size равен 2048KB
Значение calculated max worker threads рассчитывается согласно документа Configure the max worker threads Server Configuration Option. В этом документе приводится таблица расчётных значений в зависимости от количества процессоров и битности сервера.
В нашем случае используется 64-битный сервер с 12 ядрами, поэтому расчёт будет выполняться по формуле 512 + ((logical CPU’s — 4) * 16) = 640.
Итак, в нашем примере накладные расходы SQL Server составят 2MB * 640 + 256MB = 1536MB = 1,5GB.
Обратите внимание на то, что если на сервере SQL Server планируется использовать более одного экземпляра SQL Server, то расчёт накладных расходов нужно выполнять по аналогии отдельно для каждого экземпляра. Например, в нашем случае планируется использование двух инстансов SQL Server, поэтому значение, которое нужно зарезервировать на накладные расходы SQL Server будет увеличено до 3GB (1,5GB * 2)
Итоговый расчёт Maximum server memory
Согласно нашего примера, итоговый расчёт памяти, который можно указать в качестве Maximum server memory будет выглядеть так:
Всего ОЗУ на сервере (72GB) — ОЗУ под нужды ОС (4GB) — ОЗУ под сторонние приложения (2GB) — ОЗУ накладные расходы SQL Server (3GB) = 63GB.
Теперь, учитывая то, что у нас на сервере будет 2 экземпляра SQL Server, остаётся только разделить полученную величину между экземплярами в зависимости от их потребностей и задать соответствующие значения в параметре.
Одному из двух экземпляров SLQ Server, который в нашем случае будет использоваться разными мелкими служебными приложениями, мы разрешим использовать лишь малую часть расчётного максимального значения — 3GB, а экземпляру SQL Server, который будет обслуживать базы 1C:Предприятие мы отдадим оставшиеся 60GB в качестве Maximum server memory.
Опция Minimum server memory
Параметр Minimum server memory определяет нижнюю границу невысвобождаемой экземпляром SQL Server памяти. При запуске экземпляра эта память не занимается сразу, однако добравшись до этой нижней границы, указанный объём памяти закрепляется за работающим экземпляром SQL Server.
Найти каких-то чётких рекомендаций относительно этого показателя для 1С не удалось, поэтому воспользуемся простым примером из документа 1С:ИТС — Настройки Microsoft SQL Server для работы с 1С:Предприятием и установим значение Minimum server memory в виде половины от рассчитанного выше значения Maximum server memory.
Дополнительные источники информации:
Проверено на следующих конфигурациях:
| Версия ОС | Версия SQL Server |
|---|---|
| Microsoft Windows Server 2012 R2 Standard EN (6.3.9600) | Microsoft SQL Server 2016 SP2 CU4 (13.0.5233.0) |

Автор первичной редакции:
Алексей Максимов
Время публикации: 13.02.2019 10:57
Расчет оперативной памяти для sql
Добрый день имеется сервер с 8гб озу, Raid 1. ОС 2008 r2 x64, сервер 1с х32, ms sql 2008 r2 x64. Все это дело физически на одном сервере. Работают 3 пользователя в одной сети без рдп. Имеется две базы — одна размером 15 Гб. вторая 500 Мб. Настройки сервера sql: максимально озу беру из рассчета — вся память 8Гб — 2Гб под ОС, 1.5Гб 1с, остальное под sql — 4.5 Гб. Вопрос уже поднят о покупке озу нужны факты того что увеличение озу спасет ситуацию. Минимальный размер для запроса 10 000 Кб, число рабочих потоков 512.
В основной момент работы sql распухает до 6.5 Гб оперативной памяти.
Следовательно вопрос — по какому принципу ms sql расходует память относительно размера БД. Если БД будет 200 Гб то ему надо будет столько же озу?
И еще откуда брать размер «Минимальный размер для запроса»? По умолчанию достаточно ли будет 1024Кб?
И как узнать сколько мне надо «число рабочих потоков»
Всем спасибо за ответы. Просьба камнями не кидать.
По теме из базы знаний
- Кешируем SQL
- PostgreSQL на Windows – реальная альтернатива для высоконагруженных систем на базе 1С
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Почему PostgreSQL не лучше MS SQL
- Опыт работы «1С:ERP» в ландшафте Linux + PostgreSQL – 7 лет
- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
3. akita 10.06.15 10:26 Сейчас в теме
по какому принципу ms sql расходует память относительно размера БД. Если БД будет 200 Гб то ему надо будет столько же озу?
От размера БД «плясать» вообще не стоит. Даже от размера самой большой таблицы отталкиваться сложно, ибо практически всё зависит «от самого запроса». Вполне реально получить ситуацию, когда «маленькая» БД «жрёт больше».
AlexO; Fox-trot; + 2 – Ответить
7. nihfalck 10.06.15 12:47 Сейчас в теме
(1) scarfase, есть такой показатель как «Коэффициент попаданий в кэш буфера». https://msdn.microsoft.com/ru-ru/library/ms176018.aspx
от него и нужно плясать при оценке необходимой памяти SQL серверу.
а объем баз, количество пользователей — все от лукавого. у нас база 90Гб, 50-60 активных пользователей. SQL серверу выделено 8Гб памяти — все отлично работает. Коэфициент попаданий в кэш 95%.
13. AlexO 134 10.06.15 16:30 Сейчас в теме
по какому принципу ms sql расходует память относительно размера БД
Ни по какому. SQL загружает в память те данные, которые нужны для обработки. А это определяет 1С.
Поэтому чем их больше в памяти — тем быстрее работает SQL, и отсюда следствие — он занимает в конце концов всю доступную ему память.
(1) scarfase,
И еще откуда брать размер «Минимальный размер для запроса»?
Разберитесь сначала, что это за параметр. Он не настраивается методом «подскажите размер».
Размер уже «подсказан» — по умолчанию. Если не знаете, что это за параметр — оставьте его в покое.
И как узнать сколько мне надо «число рабочих потоков»
Аналогично. Не знаете, для чего — оставляйте один. Иначе поимеете еще и проблемы от неправильно сделанных/»не помню, что делал» настроек.
21. fzt 11.06.15 07:39 Сейчас в теме
Следовательно вопрос — по какому принципу ms sql расходует память относительно размера БД. Если БД будет 200 Гб то ему надо будет столько же озу?
В целом рассчитывай примерно по 150-200мб на пользователя, но не менее 2ГБ.
MsSQL не хранит в памяти кеш результатов запроса, эта падла софтина держит в памяти кеш планов выполнения запросов (грубо говоря, второй раз не вычисляет какие индексы нужны, не проводит стоимостной оценки и оптимизации запроса). Если запрос редок и тяжел — в любом случае получатся тормоза у других юзеров (на момент блокировки записей). Конкретно от этого помогут избавиться SSD, или грамотно построенные рейды. Ещё всетаки можно распихать индексы и данные на отдельные рейд массивы. Ещё можно PostreSQL заюзать, если вы человек наемный — перепишите блокировки ручками, будет летать как-будто в базе 1 юзер на локальном пк.
Есть ещё нюанс. К сожалению серверная винда (по крайней мере 2008r2) может начать свопирование, при наличии 15-25% свободной ОЗУ. Это вообще не лечится, кроме как отключением свопа, но при возможности ограничить память MsSQL мера допустимая. Останется только сжирание памяти утечками.
2. vasyak319 149 10.06.15 10:06 Сейчас в теме
1. SQL сожрёт всё, что ему дадут сожрать.
2. Судя по описанию, спасать вашу ситуацию не нужно. У нас 100 юзеров работало с 60 ГБ базой УПП на 8ГБ сервере и ничего.
5. scarfase 10.06.15 12:38 Сейчас в теме
(2) vasyak319, так что если я поставлю ограничение в 2Гб эффекта не будет?!
9. vasyak319 149 10.06.15 13:59 Сейчас в теме
(5) scarfase, ну, необоснованно душить его тоже не стоит. Там на самом деле странности какие-то творятся: у нас тот сервер, на котором было 8 ГБ и не было проблем (и, кстати, не было установлено ограничение на объём памяти — жри, сколько хочешь) в итоге сдох. Купили новый, с 64ГБ — вот на нём начались проблемы — кончается память, после чего 1С начинает жутко тормозить, документы по нескольку минут проводятся. Диспетчер задач показывает какие-то скромные объёмы, отжираемые процессами, из которых в сумме 64 ГБ явно не набрать. Я ограничил SQL 50ГБ, что решило проблему где-то на месяц. Недавно память снова кончилась и снова начались тормоза, правда не жуткие — если бы не перепроведение месяца, которое заняло вдвое больше, чем должно было, никто бы и не заметил. Диспетчер снова показывает, что память почти кончилась (пара гигов всего свободно), хотя каждый отдельный процесс опять ведёт себя скромно.
В общем, не трогайте то, что работает, разве только у вас действительно есть какие-то проблемы.
Тем более, что у вас на всём этом великолепии три юзера тусят — покупайте за 200 баксов комп на селероне, выкладывайте на него базы в файловом варианте и не парьтесь. А сервер отдайте бедным.
10. scarfase 10.06.15 14:07 Сейчас в теме
(9) vasyak319, было на файловом, специально перевели на клиент серверный вариант. Идея не моя я лишь исполнитель. Надо же разобраться откуда такие цифры и как ими управлять
12. vasyak319 149 10.06.15 15:33 Сейчас в теме
(10) scarfase, не надо же. У вас 3 (три) юзера, а вы собрались для них какое-то двадцатиэтажное Министерство по делам юзеров на Арбате отгрохать. Надо соизмерять ресурсы с задачей.
15. v3rter 10.06.15 16:37 Сейчас в теме
(12) Задача может быть в повышении безопасности — унести, например, незаметно копию базы с SQL-сервера на порядок сложнее.
17. AlexO 134 10.06.15 16:39 Сейчас в теме
Задача может быть в повышении безопасности
Тогда вам тем более SQL не нужен. Для 1С он призван решать совсем другие задачи, и это даже, в первую очередь, не ускорение обработки данных. Внезапно.
16. AlexO 134 10.06.15 16:37 Сейчас в теме
(10) scarfase, [IS-QUOTE]Надо же разобраться откуда такие цифры и как ими управлять
Так разберитесь. Зачем спрашивать сразу «че-то сделал, что — не знаю, как, работать будет, нет?» ))
(11) v3rter,
Я к тому, что prhost-ы и SQL — это далеко не все потребители ресурсов сервера и закладываться надо с запасом на перспективу.
На сервере 1С и SQL это — основные потребители. Все остальное вторично.
И с «утечками памяти антивируса» утечки памяти 1С — не сравнятся, и рядом не стояли.
11. v3rter 10.06.15 14:13 Сейчас в теме
(9) У нас утечку памяти изредка вызывает антивирус одного известного российского производителя, отрицающего наличие проблемы как таковой. Лечим перезагрузкой в нерабочее время. Я к тому, что prhost-ы и SQL — это далеко не все потребители ресурсов сервера и закладываться надо с запасом на перспективу.
Вообще при любом проектировании приходится собирать инфу о перспективах, особенно неофициальную.
19. mitya-paramonov 11.06.15 06:22 Сейчас в теме
(9) vasyak319, Если все настраивали рукожопы — самый мощный сервер лишь отсрочит вашу смерть.
24. vasyak319 149 11.06.15 11:19 Сейчас в теме
(19) mitya-paramonov, по официальной версии рукожоп именно я: при покупке сервера свалилась редкая удача — админ ушел в запой и устанавливать сервер дали мне (вообще меня к инфраструктуре не допускают и сейчас я даже процессы всех юзеров на сервере посмотреть не могу), а потом админ вышел, сказал: «всё не так» и переустановил. Теперь, видимо, всё так, а то, что базе, которой хватало 8 гиг, перестало хватать 64, это, видимо, так и задумано было.
4. v3rter 10.06.15 11:07 Сейчас в теме
«Минимальный размер для запроса» мне не попадался ни в одном мануале по установке 1С на SQL (можете кинуть камнем, если это не так).
Рабочих потоков — по числу процессорных ядер или на 1 меньше.
Размер базы планируйте на хранение данных как минимум за три года.
Если есть возможность добавить оперативы — лучше добавляйте, количество баз и цена вопроса даже через два-три года непредсказуемы.
6. scarfase 10.06.15 12:39 Сейчас в теме
Рабочих потоков — по числу процессорных ядер или на 1 меньше
то есть xeon 4 ядра и 2 потока то тогда мне надо указать всего 7 рабочих потоков?! Или я что то не так понял?
8. v3rter 10.06.15 13:09 Сейчас в теме
(6) scarfase, блин, перепутал с файловыми потоками (группами), прошу прощения.
Никогда не трогал этот параметр. Здесь http://infostart.ru/public/65955/ советуют ставить 2048.
На больших базах создание файловых групп ( https://msdn.microsoft.com/ru-ru/library/ms179316.aspx ) по количеству ядер обещает некоторое ускорение.
14. AlexO 134 10.06.15 16:35 Сейчас в теме
«Минимальный размер для запроса» мне не попадался ни в одном мануале по установке 1С на SQL
Он и не должен был там попадаться, т.к. не имеет никакого отношения к установке и запуску базы 1С на SQL.
(7) nihfalck,
есть такой показатель как «Коэффициент попаданий в кэш буфера»
Много чего есть в мире.
Чем вы «попадания» проанализируете на 1С, расскажите?
Коэфициент попаданий в кэш 95%.
Или не работает никто. Коэффициент попадания 100%
(8) v3rter,
На больших базах создание файловых групп
Причем тут 1С?
18. scarfase 11.06.15 06:18 Сейчас в теме
Так разберитесь. Зачем спрашивать сразу «че-то сделал, что — не знаю, как, работать будет, нет?» ))
я поэтому и спрашиваю чтоб подсказали конкретные статьи и материалы, и решение всегда нужно вчера и времени нет.