ТЕСТИРОВАНИЕ
Одна из наиболее актуальных задач развития платформы "1С: Предприятие" - повышение масштабируемости и производительности создаваемых на ее основе прикладных программ в условиях увеличения объема обрабатываемых данных, сложности выполняемых задач и роста числа подключенных к системе пользователей. Решая данную проблему в процессе создания новой версии 8.0, разработчики "1С" основной акцент, вполне естественно, делали на увеличение эффективности приложений, функционирующих в клиент-серверной архитектуре. Модернизация платформы при этом велась в двух основных направлениях:
- увеличение производительности системы в рамках традиционного для версии 7.7 варианта развертывания на одном однопроцессорном сервере;
- совершенствование распараллеливания процессов обработки для более эффективного применения многопроцессорных и многокомпьютерных систем, т. е. обеспечение масштабируемости за счет простого подключения дополнительных аппаратных средств.
Для решения указанных задач специалисты "1С" внесли целый ряд технологических новшеств:
- создали полноценную трехуровневую клиент-серверную архитектуру, в которой используется сервер приложений "1С:Предприятие" *1;
_____
*1. Широкий диапазон масшабируемости "1С:Предприятия 8.0" обеспечивается также путем реализации трех вариантов работы - однопользовательского, файл-серверного (наиболее часто применяемого для групп до 10 человек) и клиент-серверного на базе трехуровневой архитектуры (десятки и сотни одновременно работающих пользователей). Все они могут быть использованы без модификации прикладного решения, т. е. разработчик тиражных решений может выпускать одно и то же приложение для организаций самого разного масштаба. Такой подход, при всей его привлекательности, все же накладывает некоторые ограничения, поскольку подобная универсальность снижает возможность оптимизации работы системы в каждом конкретном режиме.
- повысили уровень гранулярности блокировок при работе с базами данных (в частности, от блокировок на уровне таблицы, как это было сделано в версии 7.x, перешли к блокировкам на уровне записи);
- изменили объектную модель с целью оптимизации процесса обработки сложных объектов;
- более эффективно перераспределили функции между оперативными и регламентными процедурами;
- модернизировали язык запросов к БД, что позволило перенести существенную часть нагрузки с клиентской части на сервер и снизить число обменов между клиентом и сервером *1;
_____
*1. В версии 8.0 по сравнению с 7.7 произошло серьезное перераспределение вычислительной нагрузки от клиентского компьютера к серверу. В то же время, отдав серверу многие процедуры содержательной обработки данных, на клиентском ПК для повышения эффективности работы пользователя больше ресурсов выделяется для управления графическим интерфейсом. В результате при прочих равных условиях требования к рабочим станциям в "1С:Предприятии 8.0" несколько возросли, но лишь для обслуживания локальных операций (манипулирования пользовательским интерфейсом). Влияние же мощности клиентских машин на производительность системы в целом существенно снизилось.
- создали дополнительные низкоуровневые программные средства управления процессом обработки данных.
В то же время в новой версии платформы разработчики "1С" отказались от использования хранимых в БД процедур (они применялись в 7.x), мотивируя это тем, что хранимые процедуры, с одной стороны, усложняют сопровождение и обновление ПО, а с другой - не дают существенного эффекта (короткие запросы SQL Server 2000 обрабатывает достаточно быстро, а выполнение сложных операций может взять на себя сервер "1С:Предприятие").
В момент представления предварительной версии платформы в августе 2002 г. разработчики "1С" очень осторожно давали оценки возможного повышения масштабируемости и производительности, подчеркивая тогда, что их мнение по этому вопросу базируется не на результатах тестирования, а на общем анализе архитектурных новшеств. В марте 2003 г., выпустив бета-версию, компания продемонстрировала первые итоги исследований функционирования реальной системы (см. PC Week/RE, N 13/2003, с. 36).
Тогда было показано, в частности, что при работе со справочниками производительность новой версии осталась примерно на уровне предыдущей. Скорость же обработки документов повысилась в два-три раза. Наиболее заметный эффект наблюдался при построении отчетов: продолжительность выдачи результата снизилась в 5-10 раз. Важнейший показатель масштабируемости - характер изменения времени отклика при увеличении числа пользователей. Для файл-серверного варианта соответствующие характеристики версии 8.0 остались примерно на уровне предыдущей 7.7. А вот в клиент-серверной конфигурации зафиксировано существенно меньшее падение производительности (в 4-6 раз) при увеличении нагрузки *1.
_____
*1. В данном случае речь идет о тестах годичной давности с использованием пробных версий прикладных решений. По оценкам специалистов "1С", в уже выпущенных прошлой осенью продуктах на базе "1С:Предприятия 8.0" эффективность работы файл-серверного варианта также значительно повышена по сравнению с 7.7, особенно при решении комплексных задач, в которых задействованы слабо пересекающиеся данные. Однако пока формальные тестовые испытания на файл-серверных конфигурациях не проводились, так как основные перспективы повышения производительности и масштабирования связываются с использованием клиент-серверной архитектуры.
Однако, демонстрируя эти данные, руководитель проекта Сергей Нуралиев сразу подчеркнул, что проверялся только один из многочисленных аспектов работы новой системы, и пообещал продолжить подобные исследования. Вопросы масштабируемости и производительности по вполне понятным причинам очень интересовали и сообщество партнеров "1С" - они регулярно затрагивались на проходивших в течение последнего года семинарах.
Несмотря на то что рабочие версии прикладных систем были выпущены еще в августе, дать сегодня объективную оценку этих параметров платформы "1С:Предприятие 8.0" на примере конкретных проектов пока сложно. На качественном уровне их можно будет обсуждать не раньше чем через полгода-год, когда будет накоплен достаточный объем информации.
Именно поэтому "1С" решила продолжить проведение специальных испытаний, тем более что только они могут дать хоть и ориентировочные, но все же количественные результаты. Предварительные итоги очередного этапа такого тестирования были подведены на совещании партнеров "1С" 30 ноября 2003 г., а в канун нового года окончательные результаты были опубликованы на сайте http://v8.1c.ru.
Общие характеристики тестовых конфигураций
Основная цель проведенного исследования - оценка масштабируемости "1С:Предприятия 8.0" при увеличении интенсивности работы пользователей и росте объема обрабатываемых данных для клиент-серверного варианта системы. А само сравнительное тестирование проводилось в максимально приближенных к реальным условиях на примере двух типовых конфигураций: "1С:Предприятие 7.7. Торговля+Склад", редакция 9.2 и "1С:Предприятие 8.0. Управление торговлей", редакция 10.
Таблица 1. Характеристики тестовых баз данных в исходном состоянии
Было подготовлено два варианта базы данных (для версий 7.7 и 8.0) - ее наполнение и в том и в другом случае соответствовало деятельности типичной торговой фирмы, занимающейся оптовыми продажами (табл. 1). Исследования велись в специально построенной локальной вычислительной сети, включающей серверы с различным числом процессоров (1-4) и до полутора десятка современных рабочих станций (табл. 2). В испытаниях приняло участие московское отделение Intel, которое предоставило серверы и провело полезные консультации по организации тестирования.
Таблица 2. Конфигурация тестовой системы
Многопользовательский ввод документов
В этой группе тестов рассматривались наиболее критичные с точки зрения производительности режимы функционирования системы: запись и проведение документов в конкурентном режиме при большом количестве подключенных пользователей. Моделирование интерактивной работы конечных пользователей происходило в режиме "активных" сессий - выполнения клиентской части приложения "1С:Предприятие" под управлением специально созданной программной консоли. (На одной физической рабочей станции можно было имитировать до 10 активных сессий.) По результатам опроса фирм-партнеров были получены следующие оценки средних параметров работы торговых систем с числом пользователей более 20 при пиковых нагрузках:
- доля пользователей, занимающихся активным вводом документов: 40% от общего числа одновременно обращающихся к одной информационной базе;
- скорость заполнения документов: 12 строк в минуту;
- размер вводимого документа: 15 строк;
- частота ввода документов одним пользователем: один документ в три минуты.
Нагрузки при моделировании существенно превышали реальные. В частности, в тесте 1, о котором пойдет речь далее, оценивалась производительность системы при одновременной работе большого количества пользователей в конкурентном режиме при выполнении следующих условий:
- одинаковый размер табличной части документов (20 строк);
- частота ввода для одной активной сессии - один документ в минуту;
- каждый пользователь имеет дело со своим набором контрагентов, но на одном и том же складе;
- в каждом четвертом документе используется конкурентный (пересекающийся) товарный состав.
Масштабирование за счет увеличения мощности оборудования
Одним из наиболее оптимальных способов повышения производительности многопользовательских информационных систем (по затратам заказчика на их развитие) является наращивание вычислительных мощностей без модификации самого программного решения за счет увеличения парка серверов, а также числа процессоров и объема памяти на отдельном компьютере.
Новая объектная модель, поддерживаемая "1С:Предприятием 8.0", реализована таким образом, чтобы минимизировать число взаимных блокировок при работе нескольких пользователей (конфликты могут возникать при одновременном их обращении к логически связанным данным).
Кроме того, при запросе к БД блокировка доступа выполняется на уровне записи. Все это обеспечивает более полное распараллеливание обработки информации, что и подтверждается результатами проведенных исследований.
На рис. 1 представлены результаты теста 1, отражающие зависимость времени обработки документа от числа процессоров при установке MS SQL Server и сервера "1С:Предприятие 8.0" как на одном, так и на двух компьютерах (наиболее производительная конфигурация).
Рис. 1. Зависимость скорости обработки документов при многопользовательском вводе и различной конфигурации серверов
На рис. 2 приведена зависимость максимального количества пользователей, которых может обслуживать система (здесь - сервер базы данных и сервер "1С:Предприятие" находятся на одном компьютере) при заданном верхнем пороге времени реакции (10 с) от числа процессоров. Зависимость эта носит почти линейный характер, что свидетельствует о высоком уровне распараллеливания и оптимальной загрузке процессоров.
Рис. 2. Зависимость максимального количества обслуживаемых
пользователей при заданном времени обработки документов
(10 с) от числа процессоров на сервере (MS SQL Server и сервер
"1С:Предприятие 8.0" установлены на одном компьютере)
Сравнение 7.7 и 8.0
Однако каковы возможности новой версии "1С:Предприятие" по сравнению с предыдущей? Ответ на этот вопрос представлен на рис. 3 для условий описанного выше теста 1. Из графиков а и б видно, что если для версии 7.7 упомянутая зависимость носит экспоненциальный характер, то для 8.0 - скорее логарифмический. Соответственно, если время отклика при работе одного пользователя версии 7.7 составляло 3 с, то уже при 35 "активных" сессиях оно увеличивалось в пять раз и достигало 15 с. А для версии 8.0 при 140 "активных" сессиях время обработки не превышало 5 с.
Рис. 3. Зависимости скорости обработки документов при многопользовательском вводе для версий 7.7
и 8.0. (MS SQL Server работает на четырехпроцессорном компьютере, сервер "1С:Предприятие 8.0" - на
выделенном двухпроцессорном компьютере)
Комментируя эти результаты, нужно сделать одно критическое замечание. В данном случае при тестировании версии 7.7 использовалась одна 4-процессорная машина, на которой работала СУБД MS SQL Server (сервера приложений в 7.7 нет), а при испытаниях версии 8.0 рабочая конфигурация включала два сервера. Конечно, возможность масштабирования решения за счет увеличения мощности аппаратуры очень важна, но что ждет пользователя системы на базе 7.7, развернутой на однопроцессорном сервере (наиболее типичный случай), при переходе на версию 8.0? К сожалению, специалисты "1С" не проводили сравнительных исследований для таких простых серверных конфигураций, но ответ на этот вопрос можно дать и на основе уже опубликованных данных.
Как отмечалось ранее, одним из архитектурных недостатков платформы 7.7 является низкая эффективность распараллеливания обработки запросов к СУБД. В результате в случае прикладных решений "1С:Предприятия 7.7" использование многопроцессорных серверов для MS SQL Server не приводит к заметному повышению производительности по сравнению с однопроцессорным вариантом (это подтверждается опытом эксплуатации).
Учитывая это, для корректного сравнения версий 7.7 и 8.0 на наиболее типичной программно-аппаратной платформе - одиночном однопроцессорном сервере - нужно сопоставить графики на рис. 3 и 1, из которых видно, что повышение производительности хотя и не столь разительное, все же весьма заметно - почти в два раза.
На графике 3 приведены результаты теста 2 (он проводился только для версии 8.0). По сравнению с предыдущим вариантом в нем изменились следующие параметры: 90% активных сессий вводят документы с размером табличной части в 20 строк, остальные - 1000 строк (частота ввода одинакова - 1 документ в минуту, но объем вводимых строк существенно увеличился). Анализ полученных результатов (рис. 1) показывает, что при увеличении объема записываемой информации (строк) в 5,9 раз скорость реакции системы уменьшилась только в 2,3 раза, при этом время отклика сохранилось на приемлемом уровне.
Время обработки документов различного объема
Еще одна группа тестов связана с исследованием зависимости времени обработки одной строки документа от его размера (общего числа строк). В этом случае частота ввода документов в рамках одной активной сессии составляла 1 документ в минуту, а при запуске нескольких сессий обработка велась в конкурентном режиме: в каждом четвертом документе использовался "пересекающийся" товарный состав.
Здесь следует отметить используемый в версии 8.0 новый подход - разделение операций на оперативные и регламентные. Полный цикл обработки документов (например, накладных) при их вводе в систему требует выполнения ряда дополнительных операций, в том числе проведения товаров по партиям. В версии 7.7 эти действия производятся автоматически при вводе каждого документа. А в 8.0 такая операция выведена в состав регламентных, которые делаются в фоновом режиме после завершения ввода всех документов, что позволяет ускорить отклик системы при оперативном вводе информации. Для более корректного сравнения возможностей 7.7 и 8.0 на приведенных далее графиках все данные по версии 8.0 даны с учетом полного цикла обработки и с учетом проведения товаров по партиям (т. е. собственно ввод в этом случае на самом деле выполняется еще быстрее).
Рис. 4. Зависимость времени обработки документов от их объема
При использовании версии 7.7 время обработки документа растет практически прямо пропорционально его объему (см. рис. 4). В случае 8.0 увеличение этого времени не столь значительно, причем показатели для параллельной работы 10 сессий почти такие же, что и для монопольного режима работы. Следует отметить, что эффективность функционирования подобных систем очень часто оценивается не по времени проведения одного документа, а по скорости обработки одной товарной позиции (строки документа). Соответствующие пересчитанные характеристики приведены на рис. 5.
Рис. 5. Зависимость времени обработки одной строки документа от объема документов.
Время обработки одной строки документа = Время проведения документа /
/ (Количество строк документа х Количество активных сессий)
Графики на рис. 4 и 5 получены для документов размером от 20 до 100 строк. Тесты показали, что на отметке 100 строк скорость обработки одной строки для версии 8.0 в целом стабилизируется и при дальнейшем росте объема документа время его проводки начинает линейно возрастать (но заметно меньше, чем для 7.7).
И в этом случае сравнение работы версий 7.7 и 8.0 проводилось на максимальных по мощности аппаратных конфигурациях. При использовании одного однопроцессорного сервера преимущество 8.0 будет не столько впечатляющим.
Построение отчетов
В последнее время заметно выросла актуальность систем поддержки принятия решений на основе бизнес-анализа накапливаемой информации. Именно поэтому разработчики "1С:Предприятия 8.0" особое внимание уделили повышению производительности построения разнообразных отчетов. Этому вопросу был посвящен отдельный этап тестирования, в рамках которого проводились:
- сравнение производительности двух решений при построении отчетов по остаткам и движению регистра накопления;
- оценка влияния различных факторов на скорость генерации отчета.
В качестве тестовых примеров использовались отчеты "Ведомость по остаткам ТМЦ" (версия 7.7) и "Ведомость по товарам на складах" (версия 8.0).
Первая серия тестов была посвящена анализу зависимости времени построения отчета от величины календарного периода при отборе данных по 10 элементам номенклатуры. Результаты, приведенные на рис. 6, показывают значительное повышение скорости построения отчетов "1С:Предприятием 8.0". Кроме того, видно, что при увеличении анализируемого периода с недели до года время генерации отчета в случае "1С:Предприятия 7.7" возросло в 3,75 раза, тогда как в случае "1С:Предприятия 8.0" - всего в 1,36 раза.
Рис. 6. Оценка влияния величины календарного периода,
за который проводился анализ, на время построения отчета
На следующем графике (рис. 7) представлены результаты оценки влияния количества элементов номенклатуры в выборке на время выполнения отчета (количество записей в регистрах накопления составило свыше 13 млн.). И в этом случае "1С:Предприятие 8.0" показало более высокую скорость построения отчета.
Рис. 7. Влияние числа элементов номенклатуры отбора на время построения отчета
Главные проверки - впереди
Оценивая результаты любых эталонных тестов (тем более когда речь идет о сложных прикладных решениях), следует иметь в виду, что они лишь в определенной мере отвечают реальным условиям эксплуатации конкретных систем. Их нужно воспринимать в первую очередь как базовые ориентиры. Тем не менее можно констатировать, что в рамках клиент-серверной конфигурации данный набор тестов показал следующие преимущества "1С:Предприятия 8.0" по сравнению с версией 7.7:
- более высокую производительность в типовых режимах функционирования: при многопользовательском вводе и проведении документов, а также при построении отчетов;
- существенно меньшее падение производительности при увеличении интенсивности нагрузки и росте объема обрабатываемых данных;
- высокую степень распараллеливания (пропускную способность) в конкурентных режимах работы;
- более эффективное использование возможностей MS SQL Server для выборки информации;
- возможность наращивания производительности при раздельном запуске сервера баз данных и сервера "1С:Предприятия" на разных компьютерах;
- высокую масштабируемость в многопроцессорных конфигурациях.
Конечно, проведенное исследование касается далеко не всех вопросов масштабирования "1С:Предприятия". Например, на партнерском семинаре многие его участники интересовались зависимостью производительности систем от мощности клиентских ПК. Со своей стороны, специалисты "1С" пообещали продолжить работы в этом направлении, в том числе с участие заинтересованных партнеров.