Администрирование · 12 мин
Как протестировать сервер 1С: пошаговое руководство
Практическое руководство по тестированию сервера 1С: проверка производительности СУБД и дисков, нагрузочные тесты, отказоустойчивость кластера, типичные ошибки и контроль результата.
Тестирование сервера 1С нужно в трёх типовых ситуациях: перед вводом нового сервера в эксплуатацию, после миграции или обновления платформы и при жалобах пользователей на «тормоза». Во всех случаях задача одна — заранее понять, выдержит ли связка «сервер 1С:Предприятия + СУБД» реальную нагрузку, и найти узкое место до того, как оно проявится в разгар отчётного периода.
Важно понимать, что «сервер 1С» — это не один компонент, а цепочка: аппаратное обеспечение, операционная система, кластер серверов 1С, СУБД (чаще всего MS SQL Server или PostgreSQL) и сеть между ними. Тестировать нужно каждое звено отдельно и систему в целом, иначе вы рискуете оптимизировать не тот узел.
Ниже — практический маршрут: от базовой диагностики железа и дисковой подсистемы до нагрузочного тестирования и проверки отказоустойчивости. Все действия, которые могут затронуть рабочие данные, выполняйте на тестовом стенде или в копии базы.
Подготовка стенда и фиксация эталона
Первое правило: никогда не проводите нагрузочные и разрушительные тесты на продуктивной базе. Разверните копию информационной базы на отдельном сервере или в отдельной базе на том же СУБД-сервере, но с изолированными ресурсами. Для файловых баз достаточно скопировать каталог, для клиент-серверных — сделать резервную копию средствами СУБД и восстановить её под новым именем.
Прежде чем что-то менять, зафиксируйте эталон: сколько времени занимает проведение типового документа, формирование ключевого отчёта, выполнение регламентной операции (например, закрытие месяца). Замеры делайте несколько раз в разное время суток и записывайте результат. Без эталона вы не сможете доказать, что после изменений стало лучше, а не хуже.
Зафиксируйте и конфигурацию стенда: версию платформы 1С, версию и редакцию СУБД, объём ОЗУ, тип дисков, параметры сети. При повторных тестах сравнение корректно только при неизменной среде: если вы одновременно сменили диски и обновили платформу, вы не узнаете, что именно дало эффект.
Проверка аппаратных ресурсов и дисковой подсистемы
Дисковая подсистема — самое частое узкое место серверов 1С, особенно с СУБД. Проверьте задержки дисков: в Windows это счётчики «Среднее время отклика диска» в мониторе производительности, в Linux — утилита iostat (показатель await). Устойчивые задержки в десятки миллисекунд при операциях с базой данных — признак проблемы; для нормальной работы СУБД желательны значения на уровне единиц миллисекунд.
Оцените пропускную способность и IOPS синтетическим тестом (например, DiskSpd или fio) на том разделе, где лежат файлы данных и журналы транзакций. Тестируйте именно тот диск, который будет использоваться в работе, и помните: синтетический тест создаёт реальную нагрузку, поэтому на боевом сервере его запускают только в окно обслуживания.
Проверьте память и процессор под нагрузкой: недостаток ОЗУ проявляется активным свопированием и ростом дисковых операций, а «перегретый» или троттлящий процессор — нестабильным временем выполнения одинаковых операций. Полезно прогнать стресс-тест CPU и памяти (например, штатными средствами ОС или специализированными утилитами) и убедиться в отсутствии ошибок и перегрева.
Как проверить результат
Единицы миллисекунд, редкие кратковременные пики
Устойчиво десятки миллисекунд и выше, очередь диска растёт
Свободная память есть, своп почти не используется
Активный свопинг, рост дисковых операций без роста нагрузки на СУБД
Разброс результатов небольшой
Время «плавает» в разы без видимой причины
Тестирование СУБД
СУБД обычно отвечает за большую часть времени отклика в клиент-серверной 1С. Начните с базовых проверок: актуальность статистики, состояние индексов, настройки автоматического обслуживания. Сильно фрагментированные индексы и устаревшая статистика способны замедлить запросы в разы — и это выглядит как «медленный сервер», хотя железо исправно.
Проверьте настройки экземпляра СУБД: ограничение памяти сервера, размещение tempdb и журналов транзакций, параметры параллелизма. Частая ошибка — СУБД и кластер 1С делят один сервер без ограничения памяти, и при пике нагрузки они начинают вытеснять друг друга в своп.
Для выявления тяжёлых запросов используйте штатные инструменты: в MS SQL Server — Extended Events или Query Store, в PostgreSQL — pg_stat_statements. Запустите сбор на тестовом стенде, выполните типовые операции и посмотрите, какие запросы занимают больше всего времени. Это даст конкретный список для оптимизации вместо тюнинга «вслепую».
Если отчёт в 1С формируется долго, а сервер «не нагружен», чаще всего проблема не в железе, а в конкретном запросе: он ждёт блокировку или читает лишние данные. Снимите трассировку запроса на стороне СУБД прежде, чем менять оборудование.
Диагностика кластера серверов 1С
Кластер 1С проверяют на трёх уровнях: доступность службы, корректность распределения нагрузки и поведение рабочих процессов. Убедитесь, что агент и рабочие процессы кластера запущены, сервер виден в консоли кластера, а сеансы пользователей подключаются без ошибок. Проверьте журнал регистрации и журналы кластера на предмет повторяющихся ошибок соединения с СУБД.
Обратите внимание на количество рабочих процессов и их потребление памяти. Один «раздутый» rphost, съедающий значительную часть ОЗУ, — типичный признак утечки или неоптимальных настроек. Полезно включить технологический журнал на тестовом стенде и собрать события по длительным вызовам: он покажет, какие именно операции платформы занимают время.
Если используется несколько рабочих серверов, проверьте правила распределения нагрузки: сеансы должны распределяться осмысленно, а не скапливаться на одном узле. Отключите по очереди рабочие серверы на тестовом стенде и убедитесь, что оставшиеся принимают нагрузку без ошибок у пользователей.
# Пример: список процессов кластера и их память (Linux)
ps aux | grep -E 'ragent|rmngr|rphost'
# Монитор дисковых задержек (Linux)
iostat -x 5Нагрузочное тестирование типовыми операциями
Синтетические тесты железа не отвечают на главный вопрос: сколько пользователей выдержит система. Для ответа нужен нагрузочный тест, имитирующий реальную работу: одновременное проведение документов, формирование отчётов, выполнение обменов данными. Составьте сценарий из 5–10 типовых операций вашей компании и определите их долю — например, 60% ввода документов, 30% отчётов, 10% тяжёлых регламентных операций.
Инструменты: нагрузочное тестирование можно выполнять сценарными средствами (например, через механизмы управляемого тестирования и обработки, многократно запускающие операции из нескольких сеансов) либо специализированными решениями для нагрузочного тестирования 1С. Начинайте с малого числа виртуальных пользователей и повышайте нагрузку ступенями, фиксируя время отклика на каждой ступени.
Критерий результата прост: время выполнения ключевых операций не должно деградировать катастрофически при росте числа пользователей, а ошибок и обрывов сеансов быть не должно вовсе. Точка, после которой время отклика начинает расти нелинейно, — это предел текущей конфигурации. Именно её сравнивают с планируемой численностью пользователей.
- 1Разверните копию базы на тестовом стенде и зафиксируйте эталонное время операций
- 2Составьте сценарий из типовых операций с реалистичными долями
- 3Запустите тест с минимальным числом виртуальных пользователей, соберите метрики
- 4Повышайте нагрузку ступенями, фиксируя время отклика и ошибки
- 5Определите точку деградации и сопоставьте её с плановым числом пользователей
- 6Проанализируйте узкое место: диск, CPU, память, блокировки в СУБД
Проверка отказоустойчивости и резервного копирования
Отказоустойчивость проверяется только контролируемым отказом. На тестовом стенде смоделируйте типовые аварии: остановку рабочего процесса кластера, отключение одного из серверов, перезапуск службы СУБД. Смотрите, что происходит с сеансами: корректный кластер переживает отказ одного рабочего процесса без потери данных, пользователи в худшем случае переподключаются.
Отдельно протестируйте резервное копирование — и не сам факт создания копии, а восстановление из неё. Регулярно выполняйте тестовое восстановление базы на изолированный сервер и проверяйте целостность данных. Бэкап, который ни разу не восстанавливали, нельзя считать рабочим: ошибки в стратегии копирования обнаруживаются именно при восстановлении.
Оцените время восстановления: если база большая, а окно простоя ограничено, полное восстановление может не укладываться в допустимое время простоя. В таком случае рассматривают модели восстановления СУБД с копиями журналов транзакций или репликацию — и их тоже нужно тестировать, а не только настроить.
Типичные ошибки и контроль результата
Самая распространённая ошибка — тестирование «вслепую»: администратор меняет настройки, не зафиксировав исходные замеры, и не может доказать эффект. Вторая — тестирование не того звена: покупают быстрые диски, когда проблема в блокировках или в неоптимальном запросе конфигурации. Третья — разовый тест: нагрузка проверяется один раз, а через полгода база выросла, и выводы устарели.
Контролируйте результат по трём признакам: время типовых операций снизилось или осталось в норме, счётчики производительности не показывают узких мест, в журналах нет новых ошибок. Если улучшение есть только «по ощущениям», а замеры не изменились — эффект сомнителен.
После ввода сервера в эксплуатацию настройте постоянный мониторинг тех же метрик, которые собирали при тестировании: задержки дисков, память, длительные запросы, число сеансов. Это превратит разовый тест в непрерывный контроль и позволит заметить деградацию до жалоб пользователей.
Что важно запомнить
Тестируйте сервер 1С послойно: железо и диски, СУБД, кластер, затем нагрузка типовыми операциями и отказоустойчивость. Работайте на копии базы, фиксируйте эталонные замеры, меняйте параметры по одному и проверяйте результат счётчиками производительности. Резервные копии считаются рабочими только после успешного тестового восстановления.
Частые вопросы
Можно ли тестировать производительность на рабочем сервере без риска?
Частично: пассивный мониторинг счётчиков производительности, анализ журналов и сбор статистики по запросам безопасны и не мешают пользователям. Активные действия — синтетические дисковые тесты, нагрузочные сценарии, отключение служб — создают реальную нагрузку и риск блокировок, поэтому их выполняют на копии базы или в окно обслуживания.
Сколько виртуальных пользователей брать для нагрузочного теста?
Ориентируйтесь на реальную численность одновременно работающих пользователей с запасом на рост — обычно тестируют до уровня заметно выше текущего, чтобы найти предел системы. Начинайте с малого числа и повышайте ступенями: так вы увидите, на какой ступени время отклика начинает деградировать.
Что проверять в первую очередь, если 1С «тормозит»?
Начните с задержек дисковой подсистемы и свопинга — это самые частые аппаратные причины. Затем посмотрите, нет ли длительных блокировок и тяжёлых запросов на стороне СУБД: часто проблема в конкретном запросе или отсутствующем индексе, а не в сервере целиком.
Как понять, что узкое место — сеть, а не сервер?
Признаки сетевой проблемы: время отклика растёт у всех клиентов одновременно, а счётчики CPU, памяти и дисков на сервере в норме. Проверьте задержки и потери пакетов между клиентами, сервером 1С и сервером СУБД, а также скорость передачи большого файла по тому же маршруту.
Как часто нужно повторять тестирование сервера?
Повторяйте при существенных изменениях: рост базы и числа пользователей, обновление платформы или СУБД, изменение конфигурации, переезд на новое оборудование. Между этими событиями полагайтесь на постоянный мониторинг ключевых метрик — он покажет деградацию раньше, чем она станет заметна пользователям.
Нужно ли тестировать файловую базу так же, как клиент-серверную?
Базовый принцип тот же, но акценты другие: в файловом варианте критичны скорость диска и сетевого доступа к файлу базы, а также число одновременных пользователей — при его росте файловый режим деградирует быстро. Нагрузочный тест с реалистичным числом сеансов покажет, не пора ли переходить на клиент-серверный вариант.