Тест производительности терминального сервера 1С

1СЧтобы понять реальную нагрузку на оборудование, необходимо было провести тест производительности терминального сервера 1С в продакшене, чем я и занимался совсем недавно, а теперь хочу представить результаты на всеобщее обозрение.

Подробнее читайте в статье.


Другие статьи об 1С вы найдете в соответствующей рубрике — .


Тест производительности терминального сервера 1С

В нескольких предыдущих статьях по 1С я занимался расчетами конфигурации серверов под различные нагрузки, генерируемые стараниями главных пользователей 1С, а именно сотрудниками бухгалтерии и отделов продаж. Задачи бухгалтеров упираются не только в составление отчетов и внесение данных в программу и потому для них более предпочтительным является полноценный терминальный доступ и уже работа со всем необходимым оттуда (Терминальный сервер 1С). Для менеджеров все значительно проще и для них вполне приемлемым сценарием использования является публикация приложения (Терминальный сервер 1С RemoteApp).

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

Тестовая среда

Итак, для тестирования был взят сервер с ЦП Intel Xeon E5-1650 v3 @ 3.50GHz, 128 ГБ RAM, 2*SSD в RAID 1. На этом сервере развернута виртуальная машина, представляющая из себя как раз терминальный сервер, с установленными на нем приложениями 1С 8.2, 1С 8.3, MS Office 2013 Pro.

Сразу скажу, что характер нагрузки был смешанный, то есть были клиенты, работающие через RemoteApp и были те, кто заходил полноценно по RDP и использовал необходимые для своей работы программы (не только 1С, но и Office). Распределение было примерно следующим: 24 сессии RemoteApp, 5 клиентов RDP.

Перед пользователями стояла задача в течение двух часов каждые 30 минут заходить в приложения и выполнять в них повседневные задачи — строить отчеты, выводить данные на печать, делать проводки документов, экспорт данных в другие форматы и т.п. Главное то, что не было цели положить сервер, была цель дать реальную среднестатистическую повседневную нагрузку.

Результаты тестирования

Началось все как обычно — пользователи с третьего пинка уже от руководителей отделов и выше все же начали заходить в 1С и выполнять рутинные задачи. Это все продолжалось недолго и у меня был всего один шанс, чтобы снять показатели производительности сервера максимально приближенные к реальной нагрузке. Вот что я получил в итоге:

ЦП:

Тест производительности терминального сервера 1С 02

Оперативка (на виртуальном сервере была выставлена динамически выделяемая память, поэтому при необходимости текущий объем RAM постоянно изменялся в большую сторону):

Тест производительности терминального сервера 1С 03

Диски:

Тест производительности терминального сервера 1С 01

Теперь необходимо проанализировать результаты и подвести итоги.

Анализ данных

Надо отметить, что расчеты по процессору оказались на редкость точными.

В статье Терминальный сервер 1С RemoteApp эмпирическим путем я установил, что потребление ресурсов ЦП одной сессией 1С RemoteApp составляет в среднем 122,775 единиц производительности процессора (данные о производительности взяты с сайта www.cpubenchmark.net 1). В другой статье — Терминальный сервер 1С — я подсчитал ресурсы, необходимые для работы полноценной сессии RDP и они составили 4% от Core i5 4460, то есть это 0,04*6622 (данные все также с www.cpubenchmark.net) = 264,88.

Итого получаем:

  • полноценная сессия RDP съедает 264,88 единиц производительности ЦП;
  • сессия 1C RemoteApp потребляет 122,775 единиц.

Вверху я упоминал, что было 24 пользователя RemoteApp и 5 RDP. Считаем:

24 * 122,775 + 5 * 264,88 = 4271

Относительный индекс производительности Intel Xeon E5-1650 v3 составляет 13477 единиц. То есть теоретически нагрузка на ЦП должна составлять в районе 32% (4271 / 13477 * 100).

На графике загрузки ЦП видно, что на интервале времени 10:30 — 10:50 ЦП загружен на 25 — 40% (пики не в счет). Конечно прямой линии нагрузки ЦП в 32% вы не получите, все равно будут колебания от минимумов к относительным максимумам, но в целом можно считать, что реальные данные согласуются с теоретическими. Кстати, чем больше будет пользователей на вашем сервере, тем более равномерным будет загрузка.

На самом деле более ценными оказались данные по оперативной памяти. По расчетам из прошлых статей у меня было:

  • 2ГБ на сессию RDP;
  • 100МБ на сессию RemoteApp.

То есть объем занятой памяти должен был составить максимум 12,4 ГБ + немного для ОС. Но, как выяснилось и как я в принципе и предчувствовал, это значение на практике представляло из себя совсем другую цифру. 1С оказалась очень жадной до оперативки, к моему сожалению. Более того, приложение ведет себя таким образом, что заняв однажды какой-либо объем, оно не считает нужным его освободить в тот момент, когда потребности в нем больше нет:

Тест производительности терминального сервера 1С 04

Ну разве нормально сожрать под 2ГБ оперативки и при этом сидеть ничего не делать (загрузка ЦП сессии 0%). Современные программисты абсолютно не заботятся об оптимальном использовании ресурсов. Лично меня, когда я учился в вузе, заставляли переписывать код приложения, если он был написан нерационально с точки зрения использования вычислительных ресурсов. Видимо квалификация современных прогеров упала ниже плинтуса, а может это просто подход —  зачем оптимизировать уже написанный код, когда лучше заниматься разработкой нового функционала. В общем не суть, бомбануло да и ладно.

Из выделенных серверу 16ГБ «динамики», он съел их все и вероятнее всего требовал больше. По идее при нехватке оперативки ОС свопит на диск и в этом случае начинается сильная просадка по производительности. В моем случае такого не было и вероятнее всего это заслуга SSD, который вообще не показал практически никакой нагрузки — только два кратковременных пика за весь период теста (с 10:00 до 12:00). Тем не менее, как показывает практика, не советую экономить на оперативной памяти терминальных серверов.

comments powered by HyperComments