Введение
Компания нашего клиента работает в сфере розничной торговли и производства, где система 1С используется для автоматизации различных бизнес-процессов, от учета товаров до производственных операций. Однако, несмотря на широкое использование системы, клиент столкнулся с проблемами производительности, которые затрудняли работу пользователей и снижали общую эффективность бизнеса.
Система работала медленно, время отклика для некоторых операций превышало приемлемые пределы, что создавало неудобства как для работников магазина, так и для сотрудников производственных подразделений. Для того чтобы выявить причины проблем и устранить их, мы предложили использовать продукт Metrika42, который позволяет в реальном времени отслеживать метрики и анализировать производительность системы 1С, а также указывать на узкие места и потенциальные сбои.
Проблемы, выявленные с помощью Metrika42
1. Низкая производительность дисковой системы
Одной из первых проблем, выявленных с помощью Metrika42, стала недостаточная производительность дисковой подсистемы, которая сказывалась на скорости работы базы данных. В процессе мониторинга была зафиксирована высокая длина очереди дисков в периоды пиковых нагрузок. Оказалось, что в периоды интенсивной работы длина очереди на дисках, где хранились базы данных, превышала нормальные значения более чем в 1000 раз. В результате этого, время отклика системы увеличивалось, что снижало производительность. Например, для части серверов с СУБД в течение пиковых нагрузок наблюдались показатели длины очереди, превышающие 1000, что указывает на экстремальную нагрузку на дисковую подсистему.
2. Аномальные ожидания в СУБД
Следующей проблемой, на которую указал мониторинг Metrika42, стали аномальные ожидания в СУБД (системе управления базами данных). Высокие значения ожиданий, такие как ASYNC_NETWORK_IO и LCK_M_X, указывали на проблемы с ресурсами серверов, а также на неоптимизированный код 1С. Эти ожидания приводили к блокировке операций, снижая общую эффективность системы. Например, ASYNC_NETWORK_IO возникал при медленной обработке данных сервером, что свидетельствовало о недостаточной производительности сетевой подсистемы. В свою очередь, LCK_M_X означало, что время получения эксклюзивных блокировок было слишком долгим, что могло быть связано с неоптимизированным кодом в 1С. Проблемы с параллельными запросами, которые были зафиксированы через тип CXPACKET, также указывали на необходимость оптимизации работы с базой данных.
3. Высокая фрагментация индексов в СУБД
Фрагментация данных в базе данных — это еще одна проблема, обнаруженная с помощью Metrika42. Многие из индексов, которые использовались в ежедневных запросах, имели фрагментацию более 70%, что значительно снижало эффективность работы с базой данных. Это замедляло выполнение запросов, увеличивало время обработки данных и, как следствие, снижало производительность системы. В данном случае важно было не только зафиксировать наличие фрагментации, но и рекомендовать регулярное проведение дефрагментации для улучшения производительности.
4. Проблемы с ключевыми операциями
Система 1С клиента выполняет ряд ключевых операций, таких как обработка документов, формирование сменных заданий, проведение документов и другие важные процессы. Metrika42 выявила несколько таких операций, которые выполнялись значительно дольше, чем это необходимо. Например, операции, такие как обработка документов ЭтапПроизводства2_2 и перемещение товаров, имели высокие задержки, что существенно влияло на общую производительность. Среднее время выполнения этих операций превышало 4-5 секунд, что является чрезмерным для эффективной работы пользователей. Эти операции являются частыми и важными для бизнеса, и их оптимизация может привести к значительному ускорению работы всей системы.
5. Длительные запросы и ошибки в логах 1С
В рамках анализа запросов и ошибок были зафиксированы длительные запросы, время выполнения которых превышало 5 секунд. Некоторые из них связаны с регулярными задачами, но другие запросы инициируются пользователями и требуют оптимизации. Примером может служить запрос ОбщийМодуль.ОбщегоНазначенияУТВызовСервера, который выполняется слишком долго, что вызывает замедление работы пользователей. Кроме того, в логах 1С были зарегистрированы ошибки, такие как "Первичный вызов сервиса пришел в пассивный сервис", которые свидетельствуют о некорректных настройках компонентов кластера 1С. Ошибки блокировок и неверное использование транзакций также снижали эффективность работы системы.
Рекомендации и решения
1. Оптимизация дисковой системы
Чтобы устранить проблемы с дисковой системой, рекомендуем клиенту увеличить количество дисков в СХД (системах хранения данных) или улучшить производительность RAID-массивов, которые обслуживают СУБД. Это обеспечит более высокую скорость обработки запросов и устранит пиковые нагрузки.
2. Настройка СУБД и устранение аномальных ожиданий
Для решения проблем с ожиданиями в СУБД, таких как ASYNC_NETWORK_IO и LCK_M_X, необходимо провести глубокий анализ и оптимизацию работы с базой данных. Это включает в себя настройку параметров СУБД, улучшение кода 1С, а также использование технологий, которые помогут уменьшить время ожидания блокировок и увеличить скорость обработки данных.
3. Дефрагментация индексов
Рекомендуется настроить регулярную дефрагментацию индексов в СУБД, чтобы ускорить выполнение запросов. Учитывая специфику работы системы и высокий уровень фрагментации, важно разработать план регулярного обслуживания и поддержания индексных структур в оптимальном состоянии.
4. Оптимизация ключевых операций
Необходимо провести детальный анализ ключевых операций, таких как обработка документов и формирование сменных заданий, и оптимизировать их выполнение. Это может включать переписывание части кода 1С, оптимизацию работы с базой данных или настройку целевых временных значений для этих операций. Важно, чтобы время отклика этих операций соответствовало стандартам производительности для поддержания эффективной работы бизнеса.
5. Исправление ошибок и работа с транзакциями
Для устранения ошибок в логах, связанных с блокировками и неверным использованием транзакций, следует провести комплексную проверку конфигурации 1С. Это включает в себя настройку компонентов кластера 1С, проверку работы с транзакциями и решение проблем, связанных с межсервисной связью. В результате этих действий будет устранен технический долг и повысится стабильность системы.
Заключение
Использование Metrika42 позволило в реальном времени выявить множество мелких проблем, снижающих производительность системы 1С клиента каждый день, и предложить эффективные решения для их устранения. Несмотря на то, что некоторые проблемы сами по себе небольшие, но их синергия приводила к серьезным тормозам. Проводя регулярный мониторинг и анализ, можно не только оптимизировать текущие процессы, но и предотвратить будущие сбои. Внедрение предложенных рекомендаций существенно улучшит скорость работы системы, повысит удовлетворенность пользователей и, как следствие, улучшит общую производительность бизнеса клиента.
Решения, предложенные в рамках кейса, направлены на улучшение работы как на уровне серверных мощностей, так и на уровне программной части, что, в свою очередь, даст компании возможность более эффективно работать в условиях конкурентного рынка и быстро реагировать на изменения.