Производительность 1С в клиент-серверном варианте

Печать (Ctrl+P)
В этой статьи я делаю обзор  основных мероприятий,  которые нужно выполнить для    увеличения производительности 1С  в клиент-серверном варианте работы 1С :

  1. Увеличение аппаратных мощностей.
  2.  Настройка сервера 1С:Предприятия
  3. Настройка SQL сервера
  4. Оптимизация кода и алгоритмов в 1С.

1. Увеличение аппаратных мощностей

Минимальные требования, предъявляемые к компьютерам, представленным на сертификацию в фирму «1С» для получения логотипа «Совместимо! Система программ 1С:Предприятие»  написаны здесь

Производительность сервера 1С: предприятие  довольно сильно зависит от частоты процессора, а для сервера базы данных  характеристики компьютера должны соответствовать требованиям Microsoft SQL Server, PostgreSQL, IBM DB2, Oracle Database.

2. Настройка сервера 1С:Предприятия

Инструкция по настройке рабочих серверов с Технологической Платформой 1С:Предприятие можно посмотреть на диске ИТС здесь

В версии 8.3 было добавлено несколько новых параметров  в настройке рабочих серверов :

  • Максимальный объем памяти рабочих процессов. Настройка позволяет регулировать объем памяти, который могут занять все рабочие процессы данного кластера на данном рабочем сервере.
  • Безопасный расход памяти за один вызов. Настройка позволяет ограничить объем памяти, который будет занят при выполнении серверного вызова на данном рабочем сервере.
  • Количество ИБ на процесс и количество соединений на процесс. Данные настройки позволяют косвенно регулировать количество рабочих процессов на данном рабочем сервере.
  • Менеджер под каждый сервис. Настройка позволяет запустить каждый сервис менеджера кластера как отдельный процесс.

3. Настройка SQL сервера

Особенность настройки Microsoft Sql  Server с целю увеличения производительности можно посмотреть на диске ИТС здесь .

 С  помощью Maintenance Plan  в разделе Management необходимо выполнять для повышения производительности  следующие регламентные задания:

  • Дефрагментацию индексов и обновление статистики нужно производить ежедневно, т.к. если фрагментированность индексов > 25%, это резко снижает производительность сервера.
  • Дефрагментация и обновление статистики – делается быстро и не требует отключения пользователей. Также рекомендуется делать ежедневно.
  • Полная реиндексация – делается с блокировкой БД, рекомендуется делать хотя бы раз в неделю. Естественно, после полной переиндексации сразу же делается дефрагментация индексов и обновление статистики.

3.1 Анализ степени фрагментации индексов

Чрезмерная фрагментация индексов создает проблемы для больших операций ввода-вывода. осле выполнении интенсивных операций по модификации данных в таблицах базы данных увеличивается время выполнения запросов и операций по модификации данных.

Это обусловлено тем, что при таких операциях происходит модификация индексов, что приводит к их фрагментации и увеличению количества операций ввода-вывода при использовании индексов в процессе выполнения операций чтения и записи данных.

Для эффективности использования индексов Microsoft SQL Server требуется 

  • Регулярная переиндексация таблиц базы данных с помощью команды DBCC DBREINDEX ( table_name ).
  • Регулярная дефрагментация индексов базы данных  с помощью команды DBCC INDEXDEFRAG(database_nametable_name, index_name).

Выбор способа решения этой проблемы зависит от интенсивности операций по модификации таблиц базы данных.

В MS SQL Server 2005 появились новые средства для контроля этого параметра.

Функция таблицы динамического  управления sys.dm_db_index_physical_stats  возвращает процент фрагментации в столбце avg_fragmentation_in_percent. Если значение в этом столбце превышает 25%, то для восстановления исходных параметров производительности рекомендуется выполнить дефрагментацию этого индекса. От снижения фрагментации индексов могут выиграть операции сканирования больших диапазонов данных, обычные в приложениях хранилищ данных и отчетов.

Использование этой информации может существенно снизить нагрузку на систему и избежать ненужных операций по дефрагментации тех индексов, для которых она не требуется.

3.2  Использование физической памяти размером более 2 ГБ в Microsoft SQL Server

Microsoft SQL Server 2000 Standard Edition и Microsoft SQL Server 2005 Workgroup Edition могут использовать до 2 ГБ физической памяти, которая динамически распределяется и освобождается в зависимости от рабочей нагрузки. При увеличении объемов базы данных этого объема оперативной памяти становится недостаточно для эффективного кэширования данных и поддержания производительности на приемлемом уровне.

3.3 Уменьшение размера журнала транзакций Microsoft SQL Server

Выполнение интенсивных операций по модификации данных информационной базы приводит к увеличению размеров файлов данных и журнала транзакций. В какой-то момент времени старые записи журнала транзакций становятся не нужными для восстановления базы данных и могут быть удалены, освобождая тем самым место для новых записей. Если своевременно не удалять старые записи журнала транзакций, то через некоторое время файл журнала транзакций может занять все свободное дисковое пространство и работа с базой данных станет невозможной.

Для уменьшения размера файла журнала необходимо предварительно удалить неактивные записи журнала транзакций с помощью команды BACKUP LOG, а затем уже с помощью команды DBCC SHRINKFILE уменьшить размер файла журнала транзакций.Последовательность команд, которую нужно исполнить в Query Analyzer, выглядит следующим образом:

BACKUP LOG Имя_Базы_Данных WITH TRUNCATE_ONLY

go

DBCC SHRINKFILE(Имя_Файла_Журнала_Транзакций)

 go

Более подробное описание и рекомендации по использованию этих команд можно найти в документации по Microsoft SQL Server.

3.4 Перемещение базы данных TEMPDB на другой диск большего размера.

TEMPDB представляет собой системную базу данных Microsoft SQL Server, в которой хранятся временные таблицы, созданные как самим сервером, так и пользователями. Эта база данных создается заново при каждом перезапуске Microsoft SQL Server. По умолчанию размер этой базы данных неограничен и увеличение его осуществляется при необходимости автоматически, порциями по 10% от текущего размера TEMPDB. Однако эти параметры могут быть переопределены пользователем. По умолчанию, минимальный размер этой базы данных, который устанавливается при старте Microsoft SQL Server, определяется размером системной базы данных MODEL. Очистка журнала транзакций в этой базе данных производится автоматически, при этом удаляются только неактивные записи журнала транзакций.

При работе 1С:Предприятия 8 в режиме клиент-сервер широко используются временные таблицыКроме того, TEMPDB используется Microsoft SQL Server при выполнении запросов, использующих операторы GROUP BYUNIONDISTINCT  и т.п.

В процессе работы 1С:Предприятия 8 возможно значительное увеличение размера базы данных TEMPDB. Если размер диска, на котором расположена база данных TEMPDB, окажется недостаточным, работа 1С:Предприятия 8 может завершиться аварийно.

Если эта проблема проявляется регулярно, то рекомендуется переместить TEMPDB на другой диск большего размера.

Эту операцию можно выполнить следующим способом:

1. определить логические имена файлов базы данных TEMPDB (колонка “NAME” результата выполнения процедуры). Для этого нужно в Query Analyzer выполнить следующую команду:

USE tempdb
GO
EXEC sp_helpfile
GO
2.изменить месторасположение файлов базы данных TEMPDB с помощью команды ALTER DATABASE. Для этого нужно в Query Analyzer выполнить следующую последовательность команд:
USE master
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'Новый_Диск:\Новый_Каталог\tempdb.mdf')
GO
ALTER DATABASE  tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'Новый_Диск:\Новый_Каталог\templog.ldf')
GO

3. Перезапустить  Microsoft SQL Server.

Более подробное описание и рекомендации по использованию этих команд можно найти в документации по Microsoft SQL Server.

4. Оптимизация кода и алгоритмов в 1С

4.1 Оптимизация запросов

Значительная часть проблем, приводящих к неоптимальной работе запросов, может быть обнаружена путем анализа кода конфигурации и структуры метаданных. Имеется перечень типичных ошибок в коде и структуре данных, последствия которых достаточно хорошо изучены и легко предсказуемы. Анализ кода с использованием этого перечня позволяет решить большую часть проблем с производительностью запросов, не углубляясь в детальную техническую информацию (текст запроса на языке SQL, план запроса и т.д.).

Основные причины неоптимальной работы запросов, диагностируемые на уровне кода конфигурации и структуры метаданных рассматриваются на диске ИТС здесь :

  • соединения с подзапросами
  • соединения с виртуальными таблицами
  • несоответствие индексов и условий запроса
  • использование логического ИЛИ в условиях
  • использование подзапросов в условии соединения
  • получение данных через точку от полей составного типа
  • фильтрация виртуальных таблиц без использования параметров

4.2 Использование замера производительности

1С:Предприятие 8 позволяет отлаживать и измерять производительность для кода на встроенном языке, исполняемом как на клиенте, так и на сервере. Особенностью работы замера производительности для клиент-серверной информационной базы в 1С:Предприятии 8 является то, что результаты замера производительности объединяются в один файл. Они включают в себя данные о ходе исполнения кода на встроенном языке как на клиенте, так и на сервере. Для получения такого замера достаточно запустить сервер 1С:Предприятия 8 в отладочном режиме (с помощью ключа командной строки /debug) и в Конфигураторе в нужный момент просто включить режим замера производительности.

Режим замера производительности в 1С:Предприятии 8 позволяет успешно производить оптимизацию работы клиент-серверных приложений. Для выполнения такой оптимизации достаточно выполнить всего несколько действий, после чего проанализировать результаты замера производительности и перейти к улучшению кода на встроенном языке.

Более подробнее об использования замера производительности можно посмотреть на диске ИТС здесь .

Перед началом работ по оптимизации системы необходимо всегда получать начальную оценку производительности при помощи “Оценки интегральной производительности системы по методике APDEX”.

4.3  Инструменты рефакторинга кода

Функции рефакторинга кода, реализованные в конфигураторе платформы 8.3.5, 1068. а также функции автоматического преобразования модальных методов и участков кода показаны на рис1.

Рис 1 Инструменты рефакторинга кода в конфигураторе

Более подробное о работе с инструментами рефакторинга можно посмотреть  на сайте разработчиков    http://v8.1c.ru/o7/201312ref/ 

Необходимость этих инструментов  разработчики платформы объясняют тем, что  код прикладных решений должен быть понятным, особенно когда над конфигурацией работает группа из нескольких разработчиков. Тогда программный код  легко поддерживать и модифицировать.

Previous Article
Next Article

One Reply to “Производительность 1С в клиент-серверном варианте”

  1. Eugeny

    Также если серверы 1С и MS SQL находятся на одном компьютере рекомендуется включить протокол Shared Memory для MS SQL.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.