ИТ-технологии для профессионалов

четверг, 13 мая 2021 г.

Рекомендации по планированию сервера для 1С

Система 1С Предприятие – это не столько готовый продукт, сколько конструктор, на основе которого создается учетная система предприятия.

Гибкость и универсальность - ее главная сила. Но в этом же кроется и основная причина потенциальных проблем производительности. У каждого предприятия свои особенности учета и клиентских интерфейсов, свои внедренцы –двух одинаковых систем (если речь не о паре бухгалтеров, разумеется) практически не бывает.

Поэтому все рекомендации по выбору аппаратуры для обеспечения быстрой работы достаточно относительны. В этой статье мы осветим основные моменты, от которых зависит производительность, и дадим рекомендации для более-менее типовых случаев.

Статья рассчитана на предприятия малого и среднего бизнеса с числом пользователей от нескольких десятков до 100-200.

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



Итак, поехали: требования к процессорам

Наиболее часто 1С используется в варианте «толстого клиента» (клиентское приложение, которое и видит пользователь), работающего в терминальном режиме. В этом самом «толстом клиенте» внедренцы обычно и реализуют основную клиентозависимую логику. 

Если используются стандартные формы и отчеты 1С, то проблем производительности обычно минимум. В случае сильно доработанных систем («самописных»), вопрос производительности может быть очень нетривиальным и, достаточно часто, печальным – об этом ниже.

Для стандартной системы вполне достаточно современных процессоров с частотой 2-2,5ГГц. Требуемое количество ядер очень сильно зависит от характера и интенсивности работы пользователей. Среднестатистическая рекомендация стара как мир – 4-5 человек на ядро. Но эта цифра более чем относительна. Например, вялотекущих менеджеров, выставляющих несколько счетов в день, можно и 10 на ядро, а вот аналитик или бухгалтер в отчетный период создают на порядок более тяжелую нагрузку. Если вы не развертываете новую систему, а модернизируете существующую, настоятельно рекомендуется оценить загрузку имеющегося железа (причем в момент максимальной нагрузки), а потом уже планировать новое. Если же возможности нет, то в целом можно ориентироваться средние 5 человек на ядро.

Есть один нюанс – 1С «не любит» двухпроцессорные системы. Связано это с тем, что подобные системы используют архитектуру памяти NUMA – т.е. каждый процессор имеет быстрый доступ к «своей» части ОЗУ. И если диспетчер задач операционной системы перебросил клиентскую сессию на другой процессор (а он это делает постоянно), то данные останутся в памяти первого и доступ к ним будет значительно медленнее. Производительность упадет – пусть не в разы, но вполне могут быть десятки процентов. Поэтому лучше предпочесть один многоядерный процессор, нежели два попроще. В разумных пределах, разумеется.

Оперативная память

Что касается оперативной памяти, то одна клиентская терминальная сессия, в зависимости от характера работы пользователя, занимает от 200-300МБ до 500-600МБ, а в тяжелых случаях и до гигабайта ОЗУ. Опять же, рекомендуется оценить загрузку существующего сервера. Если такой возможности нет, то заложить примерно 500МБ на пользователя. Причем желательно оставить часть слотов памяти свободными, чтобы была возможность расширения в случае ошибки (и просто на вырост). На объеме памяти экономить не нужно! Если недостаточная производительность процессоров может лишь замедлить отклик системы, то недостаток ОЗУ сделает ее почти неработоспособной. А вот за частотой памяти сильно гнаться не стоит. Конечно же – чем больше, тем лучше – но радикальный эффект вы вряд ли получите.

Что касается SQL сервера и сервера приложений, то им на пару можно выделить примерно столько же процессорных ядер, сколько и терминальному серверу (зачастую и меньше). Точных рекомендаций тут так же нет. Если все части трехзвенки будут работать на одном физическом сервере, то ОС сама отбалансирует нагрузку (хотя лучше это сделать администратору – см. пункт ниже о виртуализации).

Оперативную память тут экономить тоже не стоит – лучше всего, если вся база закэшируется в ОЗУ. Но особенно гнаться тут не нужно – в данном случае недостаток памяти уменьшит производительность (и то не всегда), но не вызовет свопинг, как в случае терминального сервера. Впрочем, базы 1С достаточно компактны и обычно составляют десятки гигабайт, что не так уж и дорого. И еще момент – довольно часто в БД, помимо собственно записей базы, хранятся сканы всяческих документов и пр. Такая база будет огромной, но всю ее кэшировать – бессмысленная трата денег.

О дисковой системе

1С любит быстрые диски. Очень любит. Поэтому магнитные накопители мы не рассматриваем. Совсем. Только SSD соответствующей производительности.

Немного об архитектуре. Когда-то, во времена магнитных дисков, для обеспечения достаточной производительности приходилось не только использовать RAID из большого количества дисков, но и разносить разные данные на разные массивы. В особо тяжелых системах это актуально и сейчас. Но в большинстве случаев достаточно одного массива из SSD. Причем самый простой и удобный путь – один datastor, на котором лежат виртуальные машины терминала, базы и сервера приложений. Это и будем иметь в виду далее.

Серверные SSD против десктопных. До сих пор можно услышать мнение, что десктопные диски быстрее серверных. Это не так. ТТХ десктопных дисков приводятся в «чистом» состоянии, когда характеристики максимальны. ТТХ же серверных дисков измеряются для тяжелой нагрузки, когда диск естественным образом забивается «мусором» и «чтобы что-то записать надо сначала расчистить место». Не буду вдаваться в подробности устройства SSD, просто имейте в виду, что это просто нюансы маркетинга.

NVMe – это круто. Да, интерфейс действительно быстрее, чем SATA. Но в сервере 1С крайне редко бывает такая нагрузка, чтобы забивался интерфейс – чаще все упирается в производительность контроллера и флэша. Вот если диск и сам по себе быстр, а нагрузка тяжела, то интерфейс NVMe может дать эффект – но не драматический.

Для небольших систем, с 10-20 пользователями, вполне достаточно серверных дисков начального уровня (их часто называют read intensive) в RAID1, даже на интегрированном контроллере. Обычно они имеют ресурс 1DWPD. В общем, любые недорогие серверные SSD.

Для более серьезных систем рекомендуется использовать диски среднего класса – как правило 3 DWPD. Желательно использовать не интегрированный, а полноценный аппаратный RAID10. Аппаратный контроллер и сам по себе мощнее, позволяет использовать свой кэш (см. ниже) и SAS диски, которые как правило значительно производительнее, чем SATA. Производительные NVMe U.2 диски тоже хороши, но выбор RAID контроллера в этом случае будет сильно ограничен (в т.ч. и ценой).

Intel Optane

Это самый быстрый из существующих накопителей информации. Но дорогой. Поэтому его использование в небольших системах малооправдано. Оно и в достаточно больших не всегда оправдано – как правило хватает и «обычных» Flash дисков. 

Нюанс тут в том, что 1С не столько создает большую нагрузку, сколько нуждается в минимальном времени отклика, особенно на записи – а flash диски с кэшем и так весьма быстры. В общем, мощная и дорогая штука, которая нужна в очень тяжелых случаях, если более простые средства не помогли. Но если есть финансовые возможности – прекрасное решение.

О ресурсе

В большинстве случаев (мы говорим о сервере 1С начального-среднего уровня!) неактуально. Современные серверные SSD имеют ресурс в петабайты, чего достаточно на весь срок жизни сервера. Впрочем, диски с бОльшим DWPD как правило еще и более быстрые – так что все зайцы убиваются автоматически при выборе диска нужной производительности.

О кэшировании

Серверные SSD имеют встроенную защиту их кэша, так что его можно и нужно безбоязненно включать (в отличие от магнитных дисков). При этом кэш RAID контроллера лучше выключить. Как правило, при этом достигается максимальная производительность под большой нагрузкой. Но я ряде случаев полезно включение кэша контроллера – он находится ближе всего к процессору и время отклика будет минимальным. 

Ситуации бывают разные, поэтому в случае серьезно нагруженной системы лучше всего определить это экспериментально. Только не забываем, что при включении кэша контроллера категорически рекомендуется использование защитного конденсатора (по инерции часто называемого «батарейка»).

Немного о проблемах самописных систем

Достаточно часто приходится слышать, что 1С «тупит», «тормозит нещадно» и другие злые слова. В большинстве случаев это говорит не о проблемах железа или самой платформы 1С, а о доработках, сделанных программистами предприятия или внедренцев. 

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

Если дело действительно в этом и у вас уже используется более-менее современных сервер с достаточным объемом ОЗУ и твердотельными дисками, то радикально эту проблему решить сложно и не всегда возможно.

Убедиться в этом достаточно просто – включить монитор производительности Windows. Если система «тормозит», а загрузка процессора не превышает 10-20-30%, то с большой вероятностью у вас проблема.

В этом случае можно и нужно использовать максимально высокочастотные процессоры. Увеличение количества ядер не поможет, т.к. суть проблемы в том, что одна клиентская сессия исполняется на одном процессорном ядре и скорость выполнения процесса ограничена его производительностью – сколько ядер ни дай, конкретная клиентская сессия быстрее работать не будет. 

А вот высокая частота поможет – правда дорогой ценой и не в разы. Ну и, если возможно, используйте один мощный процессор.

Можно поставить более производительные SSD – не просто какие-нибудь NVMe, а именно быстрые сами по себе. В идеале Intel Optane (хотя тоже не панацея).

Пара слов о виртуализации

Да, она снижает производительность работы 1С. Возможно, на десятки процентов. В этом месте некоторые специалисты впадают в религиозный экстаз J Но! Виртуализация сильно повышает удобство обслуживания системы, отказоустойчивость и снижает время восстановления после отказа.

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

В случае краха основного сервера можно просто запустить виртуальную машину на резервной ноде. Да, вы потеряете часть данных от последний операций (речь идет о минутах) – но в большинстве случаев это не так критично. Да, есть средства, позволяющие снизить потери, но тут вопрос цены (да и администрирование полноценного кластера на порядок сложнее). 

Данное решение требует лишь второго сервера – причем он может быть и менее производительным, чем основной, лишь бы ОЗУ и дискового пространства было достаточно. Ну и даже если вы будете вынуждены восстанавливаться из ночного бэкапа, то восстановить виртуальную машину как правило быстрее и проще, чем «bare metal».

Второй момент. Гипервизор может привязать виртуальную машину к конкретным процессорным ядрам – важно, чтобы они принадлежали одному сокету. Это снизит потери производительности, в т.ч. и описанные выше проблемы двухпроцессорных машин.

Терминальный сервер желательно запускать в отдельной виртуальной машине от SQL сервера с сервером приложений. Это актуально как с точки зрения безопасности, так и для балансировки нагрузки.

В общем, несмотря на некоторое снижение производительности, можно рекомендовать использование виртуализации для систем 1С, просто заложить железо с несколько большей производительностью.

Подведём итог

  1. На всякий случай еще раз напомню, что эта статья не претендует на объятие необъятного и истину в последней инстанции. 
  2. В каждом конкретном случае может быть много нюансов. Поэтому задавайте вопросы на нашем форуме 3nity.ru.
  3. В разделах нашего сайта можно найти рекомендованные конфигурации серверов для 1С исходя из количества пользователей (ссылки ниже).



Серверы Тринити для 1С

.
1С терминальный сервер
.
Типовые предложения для малых предприятий
.
Кластер серверов 1С:Предприятие

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

Отправить комментарий