Тестовая среда
Итак, для тестирования был взят сервер с ЦП 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С и выполнять рутинные задачи. Это все продолжалось недолго и у меня был всего один шанс, чтобы снять показатели производительности сервера максимально приближенные к реальной нагрузке. Вот что я получил в итоге:
Теперь необходимо проанализировать результаты и подвести итоги.
Анализ данных
Надо отметить, что расчеты по процессору оказались на редкость точными.
Итого получаем:
- полноценная сессия RDP съедает 264,88 единиц производительности ЦП;
- сессия 1C RemoteApp потребляет 122,775 единиц.
- 2ГБ на сессию RDP;
- 100МБ на сессию RemoteApp.
Ну разве нормально сожрать под 2ГБ оперативки и при этом сидеть ничего не делать (загрузка ЦП сессии 0%). Современные программисты абсолютно не заботятся об оптимальном использовании ресурсов. Лично меня, когда я учился в вузе, заставляли переписывать код приложения, если он был написан нерационально с точки зрения использования вычислительных ресурсов. Видимо квалификация современных прогеров упала ниже плинтуса, а может это просто подход — зачем оптимизировать уже написанный код, когда лучше заниматься разработкой нового функционала. В общем не суть, бомбануло да и ладно.
Из выделенных серверу 16ГБ «динамики», он съел их все и вероятнее всего требовал больше. По идее при нехватке оперативки ОС свопит на диск и в этом случае начинается сильная просадка по производительности. В моем случае такого не было и вероятнее всего это заслуга SSD, который вообще не показал практически никакой нагрузки — только два кратковременных пика за весь период теста (с 10:00 до 12:00). Тем не менее, как показывает практика, не советую экономить на оперативной памяти терминальных серверов.