Как проверить скорость сервера 1С Предприятие: диск, процессор, сеть, СУБД
Содержание
Пользователи жалуются, что «1С тормозит», а на сервере вроде всё в порядке. Чтобы тестирование производительности сервера 1С дало результат, проверяйте не «сервер целиком», а по очереди четыре узла: диск, процессор с памятью, сеть и СУБД. Узкое место почти всегда одно, и найти его можно за час.
Ниже порядок проверки: от самых дешёвых замеров к тяжёлым. Сначала фиксируем, как сервер ведёт себя под обычной нагрузкой, потом гоняем синтетику, потом лезем в технологический журнал.
Что подготовить перед тестированием
Без точки отсчёта любые цифры бесполезны. Сделайте три вещи.
- Опишите проблему словами пользователя: «медленно проводится документ», «долго формируется отчёт», «всё тормозит в 10:00». От этого зависит, куда смотреть.
- Запишите конфигурацию железа и ПО: число ядер, объём памяти, тип дисков, версию платформы, СУБД, схему (всё на одном сервере или приложение и база отдельно).
- Снимите «фон» — нагрузку в рабочее время без тестов. Обычные счётчики системы хватит записывать час-два.
Нагрузочные тесты гоняйте на копии базы или в нерабочее время. Тест диска или СУБД на боевом сервере в разгар дня сам создаст тормоза, а заодно исказит замер.
Сделайте и резервную копию базы , если планируете менять настройки СУБД или кластера. Любое изменение настроек — только после копии и с согласованием регламента.
Проверка дисковой подсистемы и скорости ввода-вывода
Диск — самый частый виновник. База 1С выполняет множество мелких случайных операций, поэтому важна не «линейная скорость» из рекламы, а задержка и число операций в секунду (IOPS).
Что мерить
- 📌 Задержку чтения и записи. Для SSD нормальная задержка — единицы миллисекунд и меньше. Если она стабильно переваливает за 20–30 мс, диск не справляется.
- 📌 Случайный доступ блоками 4 КБ. Именно так работает СУБД.
- 📌 Длину очереди к диску. Постоянная очередь — признак перегруза.
Чем мерить
| Инструмент | Платформа | Что показывает |
|---|---|---|
fio | Linux, Windows | Случайные операции, IOPS, задержки; гибкие сценарии |
diskspd | Windows | Аналог fio от Microsoft |
| CrystalDiskMark | Windows | Быстрый ориентир по последовательной и случайной скорости |
iostat -x 1 | Linux | Загрузку и задержки реального диска под рабочей нагрузкой |
Системный монитор (perfmon) | Windows | Счётчики Avg. Disk sec/Read, Avg. Disk sec/Write, Current Disk Queue Length |
Пример для fio: случайное чтение блоками 4 КБ в течение минуты на тестовом файле.
fio --name=randread --rw=randread --bs=4k --size=2G --iodepth=16 --runtime=60 --time_based --filename=/data/fiotest
Для записи замените randread на randwrite. Запускайте на том же разделе, где лежат файлы базы или каталог кластера.
Сравнивайте цифры «до» и «после» на одном и том же сервере. Абсолютные значения зависят от виртуализации, RAID и кеша контроллера, поэтому ориентир — динамика и сравнение с соседними серверами.
Типичные причины медленного диска
- 💾 Диск общий с другими виртуальными машинами, соседи забирают IOPS.
- 💾 Данные СУБД, журналы транзакций и временные файлы лежат на одном томе.
- 💾 Антивирус сканирует каталоги базы и кластера. Добавьте их в исключения.
- 💾 Контроллер без кеша записи или с севшей батареей.
Процессор и оперативная память
Здесь важно отличить «сервер перегружен» от «одно ядро забито одним тяжёлым процессом». Платформа 1С во многом однопоточна в рамках одного сеанса, поэтому суммарная загрузка 30% не гарантирует, что всё хорошо.
Процессор
Смотрите на загрузку по каждому ядру отдельно и на частоту. Для 1С важнее высокая частота ядра, чем их большое число. Сервер на 32 медленных ядрах по скорости отдельного документа может проиграть четырём быстрым.
- В Windows откройте «Диспетчер задач → Производительность → ЦП» и переключите график на отображение по логическим процессорам.
- Для счётчиков используйте
% Processor TimeиProcessor Queue Length. Очередь, которая постоянно больше двух на ядро, говорит о нехватке мощности. - В Linux хватит
topс клавишей1иvmstat 1.
Отдельно смотрите, какие процессы грузят ЦП: rphost (рабочие процессы кластера), ragent, rmngr, 1cv8, процесс СУБД. Если нагрузку создаёт СУБД, переходите к разделу про неё. Если rphost — разбирайте запросы через технологический журнал.
Память
- Запас оперативной памяти нужен и серверу 1С, и СУБД. Если система уходит в своп, любые замеры бессмысленны.
- В Windows следите за
Available MBytesиPages/sec, в Linux заfree -mи активностью обмена вvmstat(столбцыsiиso). - Рабочие процессы 1С со временем растут по памяти. Для крупных баз в кластере настраивают перезапуск рабочих процессов по расписанию или по объёму памяти. Параметры находятся в свойствах рабочего сервера и кластера в консоли администрирования.
Перезапуск рабочего процесса или службы сервера 1С обрывает сеансы пользователей. Делайте это вне рабочих часов и заранее предупредите людей: несохранённые документы пропадут.
Сеть и задержки между узлами
Если приложение, СУБД и пользователи разнесены по разным машинам, сеть превращается в отдельное звено. Для 1С особенно вредна высокая задержка: клиент и сервер обмениваются множеством коротких запросов, и каждый ждёт ответа.
Быстрая проверка
- С рабочего места пользователя выполните
pingдо сервера приложений. Для локальной сети нормальный отклик — около 1 мс, для офиса через VPN — единицы-десятки миллисекунд. Стабильные сотни мс означают проблему. - Повторите
pingот сервера приложений до сервера СУБД. Здесь задержка должна быть минимальной: 1 мс и меньше. - Проверьте потери пакетов: в выводе
pingне должно быть пропусков. Для маршрута удобно смотретьtracert(Windows) илиtraceroute(Linux). - Замерьте пропускную способность утилитой
iperf3: на одном концеiperf3 -s, на другомiperf3 -c адрес_сервера.
Что искать
- 🌐 Скорость порта ниже ожидаемой (100 Мбит вместо 1 Гбит из-за кабеля или настроек).
- 🌐 Ошибки и пропуски пакетов на сетевом интерфейсе.
- 🌐 Сервер приложений и СУБД в разных площадках или дата-центрах.
- 🌐 Работа удалённых пользователей по обычному клиенту через узкий канал. Для них лучше терминальный доступ или веб-клиент.
Технологический журнал для глубокого анализа
Когда железо выглядит нормально, а пользователи недовольны, нужен технологический журнал (ТЖ). Он записывает события сервера: запросы к СУБД, вызовы, блокировки, исключения, и показывает, какой именно запрос или вызов медленный.
Как включить
ТЖ настраивается файлом logcfg.xml в каталоге conf рядом с установленной платформой. Минимальный пример: писать события обращений к СУБД, которые длились больше секунды.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1clogs\dbms" history="4">
<event>
<eq property="name" value="DBMSSQL"/>
<ge property="duration" value="1000000"/>
</event>
<property name="all"/>
</log>
</config>
Здесь DBMSSQL — события для MS SQL Server. Для PostgreSQL используйте DBPOSTGRS. Порог duration задаётся в микросекундах, то есть 1000000 — это одна секунда. Параметр history — сколько часов хранить файлы.
Другие полезные события:
CALL— серверные вызовы и их длительность;TLOCK,TTIMEOUT,TDEADLOCK— управляемые блокировки, таймауты и взаимоблокировки;EXCP— исключения.
ТЖ без фильтров по длительности быстро забивает диск гигабайтами. Всегда задавайте условие и срок хранения, а каталог журнала выносите на отдельный том. Включайте на нужный интервал, потом выключайте.
Как читать
Файлы журнала текстовые, каждая строка начинается со времени и длительности события. Ищите события с самой большой длительностью и смотрите свойства Context (откуда вызван запрос в коде) и Sql или Query (текст запроса). Для разбора больших объёмов удобнее загрузить журнал во внешний инструмент: по ТЖ существуют бесплатные анализаторы и скрипты. Так вы найдёте несколько запросов, которые дают основную потерю времени.
Синтетические тесты и тест Гилева
Синтетика даёт сравнимое число, которое можно показать руководству и повторить после изменений.
Тест Гилева
Это популярная в сообществе обработка для оценки производительности связки «платформа плюс железо плюс СУБД». Её запускают в пустой тестовой базе. Результат выражается в условных «попугаях»: чем выше, тем лучше. Несколько прогонов на одном сервере позволяют увидеть разброс, а сравнение с известными значениями для похожих конфигураций показывает, где вы относительно рынка.
Как пользоваться:
- Создайте новую пустую базу на проверяемом сервере (не на рабочей).
- Загрузите обработку теста во внешнюю обработку и откройте её в обычном режиме.
- Запустите замер два-три раза подряд и возьмите среднее.
- Запишите значение и условия: нагрузка на сервер, время суток, версию платформы.
Тест чувствителен к частоте процессора и скорости диска. Низкий результат при хорошем диске указывает на слабое ядро, и наоборот.
Нагрузочное тестирование
Для проверки поведения под множеством одновременных пользователей используют специализированные средства нагрузочного тестирования 1С, которые запускают сценарии работы в нескольких сеансах. Комплексные решения от фирмы 1С и сторонние инструменты вы найдёте в разделе профильных сервисов на сайте поддержки. Подход один: записать типовой сценарий (проведение документа, формирование отчёта), размножить его на нужное число сеансов и смотреть время отклика и загрузку узлов.
Если нужен простой вариант без отдельных систем, создайте несколько тестовых пользователей и запустите одинаковую операцию одновременно из нескольких сеансов, параллельно записывая счётчики сервера.
Оптимизация СУБД как фактор скорости
Даже на хорошем железе плохо настроенная СУБД всё сводит на нет. Чек-лист по самым частым причинам.
Особенности по СУБД
| СУБД | На что смотреть |
|---|---|
| MS SQL Server | Максимальный объём памяти сервера, модель восстановления базы, обновление статистики, фрагментация индексов, размещение tempdb |
| PostgreSQL | Параметры памяти (например, shared_buffers, work_mem), процесс autovacuum, актуальность статистики (ANALYZE) |
Конкретные значения параметров подбираются под объём базы и память сервера, поэтому для PostgreSQL ориентируйтесь на рекомендации, подготовленные для 1С, а для MS SQL Server — на практики администрирования, а не на «универсальные» цифры из интернета.
Регламентное обслуживание
Раз в неделю или чаще, в зависимости от интенсивности работы, выполняйте обновление статистики и обслуживание индексов. Рядом с базой полезно включить регламентные задания 1С: сворачивание итогов регистров накопления и другие служебные операции, которые поддерживают скорость отчётов. Расписание проверьте в разделе администрирования базы.
Реиндексация и очистка тяжёлые операции. Запускайте в окно минимальной нагрузки и только после резервной копии.
Как собрать результаты и принять решение
Теперь сведите все замеры в одну таблицу: что мерили, какое значение получили и как оно отличается от нормы.
| Узел | Тревожный признак | Что делать |
|---|---|---|
| Диск | Задержка стабильно выше 20–30 мс, очередь не пустеет | Вынести СУБД на SSD, разделить тома, убрать соседей по виртуализации |
| Процессор | Одно ядро в 100% при свободных остальных | Искать тяжёлый запрос в ТЖ, повышать частоту ядра |
| Память | Активный своп | Добавить память, ограничить аппетиты СУБД |
| Сеть | Задержка между приложением и СУБД больше 1–2 мс | Разместить узлы рядом, проверить порты и кабели |
| СУБД | Давно не обновлялась статистика, нет обслуживания индексов | Настроить регламентные задания |
Решайте проблемы от дешёвых к дорогим. Сначала исправьте настройки и расписания, потом вынесите диск, и только в конце покупайте железо. Нередко медленный отчёт чинится правкой одного запроса, а не новым сервером.
После каждого изменения повторите тот же замер. Если цифра не сдвинулась, значит, вы лечили не то место.