При проектировании и сборке сервера для связки «1С:Предприятие + MS SQL Server» перед системными администраторами часто встает вопрос выбора оптимальной оперативной памяти. На рынке представлено огромное количество оверклокерских модулей с привлекательными частотами в 3600, 4000 или даже 4400 МГц. При этом выбранный процессор (например, из линейки Intel Core i9 или серверных Xeon) может официально поддерживать частоту работы с памятью только до 2666 или 2933 МГц. Возникает соблазн переплатить за более быструю память в надежде получить пропорциональный прирост скорости работы базы данных 1С.
В этой статье мы подробно разберем, как именно оперативная память взаимодействует с процессором и СУБД в среде 1С, выясним, почему высокая частота может стать источником серьезных проблем для бизнеса, и проанализируем, на какие характеристики ОЗУ действительно стоит обратить внимание при покупке серверного оборудования.
Рассмотрим ситуацию, когда в сервер устанавливается оперативная память с заявленной частотой 4000 МГц, тогда как контроллер памяти процессора официально поддерживает максимум 2666 МГц. Чтобы заставить эту память работать на ее максимальной частоте, администратору придется активировать так называемый XMP-профиль (Extreme Memory Profile) в BIOS материнской платы или прибегнуть к ручному разгону с повышением напряжения питания модулей.
Для домашних игровых компьютеров такой подход абсолютно нормален, но для сервера баз данных он категорически противопоказан. Выясним, с какими рисками это связано:
Buffer Pool). Если в процессе работы под воздействием высокой частоты или нагрева произойдет микросбой (изменение хотя бы одного бита информации в ОЗУ), страница данных станет «грязной» и запишется на жесткий диск в поврежденном виде. В результате база данных получит логические повреждения, которые могут обнаружиться лишь спустя недели при выполнении регламентной проверки DBCC CHECKDB или при попытке закрытия месяца в 1С.Проанализируем характер нагрузки, которую создает платформа 1С на систему управления базами данных. Специфика работы 1С заключается в генерации огромного количества коротких, последовательных запросов к СУБД. Это классическая OLTP-нагрузка (On-Line Transaction Processing), при которой выполняются миллионы мелких операций чтения и записи.
В таких условиях максимальная пропускная способность памяти (измеряемая в гигабайтах в секунду, которая растет с увеличением частоты в МГц) практически никогда не является узким местом. Гораздо важнее оказывается латентность памяти — задержка, с которой процессор получает доступ к нужной ячейке ОЗУ после отправки запроса. Латентность измеряется в наносекундах и напрямую зависит от таймингов памяти (в первую очередь от параметра CAS Latency или CL).
Давайте сравним реальную задержку разных вариантов памяти с помощью классической формулы:
Реальная латентность (нс) = (CL * 2000) / Частота (МГц)
(15 * 2000) / 2666 = 11.25 наносекунд.(19 * 2000) / 3600 = 10.55 наносекунд.(20 * 2000) / 4000 = 10.00 наносекунд.Разница в реальной задержке между стабильной памятью на частоте 2666 МГц и дорогой памятью на 4000 МГц составляет чуть более 1 наносекунды (около 11%). В реальных сценариях работы 1С:Предприятия этот прирост будет абсолютно незаметен для пользователей, так как основное время тратится на выполнение кода на сервере приложений и дисковые операции. При этом риски сбоев при переходе на частоту 4000 МГц возрастают многократно.
Выясним, как архитектурные особенности процессоров влияют на скорость работы подсистемы памяти. Рассматриваемый в теме процессор Intel Core i9-9820X (платформа LGA 2066) оснащен четырехканальным контроллером памяти. Это означает, что процессор может обмениваться данными одновременно с четырьмя независимыми модулями ОЗУ.
Именно активация многоканального режима работы дает колоссальный прирост производительности всей системы, который полностью перекрывает любые попытки повысить частоту отдельных планок. Чтобы задействовать этот режим на максимум, необходимо соблюдать следующие правила совместной работы компонентов:
Использование четырех каналов памяти на стандартной частоте 2666 МГц обеспечит гораздо более стабильную и быструю работу СУБД под нагрузкой от 1С, чем использование двух каналов на завышенной частоте 4000 МГц.
Серьезным недостатком использования потребительских платформ (таких как Intel Core i9 на чипсете X299) для серверов баз данных является полное отсутствие поддержки памяти с коррекцией ошибок (ECC — Error-Correcting Code).
Под воздействием внешних факторов (электромагнитные наводки, космическое излучение, тепловые колебания) в микросхемах ОЗУ периодически происходят случайные изменения состояния отдельных битов (одиночные ошибки памяти). Посмотрим, как ведут себя разные типы памяти в этой ситуации:
rphost, потере несохраненных данных пользователей и прерыванию транзакций.Для любого коммерческого использования сервера 1С наличие ECC-памяти (UDIMM или RDIMM) является золотым стандартом и главным залогом сохранности базы данных.
В ходе обсуждения часто предлагается альтернатива: покупка б/у стоечных двухпроцессорных серверов на базе старых процессоров Intel Xeon E5-26xx v3/v4 вместо сборки на современном десктопном процессоре Core i9.
Проанализируем этот выбор с точки зрения специфики работы платформы 1С:Предприятие. Архитектура 1С устроена так, что большинство критических по времени бизнес-процессов (проведение сложных документов, расчет себестоимости, закрытие месяца) выполняются строго в один поток. Это означает, что общая скорость работы системы напрямую зависит от производительности одного конкретного ядра процессора, то есть от его тактовой частоты и архитектурной эффективности (IPC).
Даже если вы установите в сервер самую быструю и дорогую оперативную память, производительность всей системы может оказаться крайне низкой из-за неправильной настройки программной части. Рассмотрим две важнейшие настройки, о которых часто забывают администраторы при развертывании связки 1С и MS SQL Server на одном физическом сервере.
1. Использование протокола Shared Memory (Общая память)
Если сервер приложений 1С:Предприятие и СУБД MS SQL Server физически установлены на одной и той же машине, они должны обмениваться данными напрямую через оперативную память, минуя сетевые протоколы. По умолчанию обмен часто идет через сетевой протокол TCP/IP, что создает лишнюю нагрузку на стек операционной системы и существенно замедляет передачу данных.
Включение протокола Shared Memory в настройках MS SQL Server и строке подключения 1С позволяет ускорить обмен данными между процессами rphost и sqlservr в несколько раз, что дает моментальный и ощутимый прирост производительности без каких-либо финансовых затрат на комплектующие.
2. Настройка ограничения максимальной памяти SQL (Max Server Memory)
По умолчанию MS SQL Server спроектирован так, чтобы забирать под свой кэш всю доступную оперативной память на сервере. Если на этой же машине запущен сервер 1С, процессы rphost начнут испытывать жесткий дефицит ОЗУ. Это заставит операционную систему активно использовать файл подкачки (pagefile.sys) на жестком диске, что приведет к катастрофическому падению производительности всей системы.
Чтобы избежать этой ситуации, выполните следующие шаги:
rphost).Подводя итоги нашего анализа, сформулируем ключевые правила выбора оперативной памяти и серверного железа для эффективной работы 1С: