Как ускорить 1С за 5 минут – Протокол Shared Memory

Другие статьи по оптимизации 1С:

«Оптимизация 1С – Проблемы производительности»

«Как ускорить 1С – Многопоточная обработка данных»

«Как в 1С оптимизировать запрос – пример ускорения в 6 раз»

Как ускорить 1С за 5 минут – Протокол Shared Memory

Что Вы узнаете из этой статьи?

  • Рассмотрены возможности ускорения «1С:Предприятие 8» в небольших организациях
  • Показана процедура включения протокола Общая память (Shared Memory)
  • Продемонстрирована диагностика использования Shared Memory

В версии 8.2.17 платформы «1С: Предприятие 8» появилась интересная возможность ускорить 1С в том случае, когда сервер приложений и сервер СУБД находятся на одном компьютере.

Настройка ускорения делается очень просто и займет всего лишь несколько минут.

Что такое Shared Memory, для чего он нужен, и зачем его включать?

В режиме работы, задаваемом по умолчанию, Microsost SQL Server и сервер приложений «1С:Предприятия» работают друг с другом только через TCP/IP. Это выглядит правильным и логичным в случае работы серверов на разных компьютерах, иной возможности нет.

Но все меняется, когда серверы находятся на одной вычислительной системе: лучше и быстрее использовать оперативную память для обмена данными, используя протокол Shared Memory (общая память).

Этот протокол позволяет добиться увеличения скорости обмена данными между серверами за счет отсутствия передачи данных по сети, причем прирост производительности может составлять от 10 до 15%. Особенно заметно ускорение на операциях с частыми вызовами сервера.

Включение Shared Memory

Запускаем Диспетчер конфигурации SQL Server.

Производим следующую настройку SQL Native Client – Клиентские протоколы – Общая память – Включено = Да, нажимаем Ok. Перезапускаем службу SQL сервера

Диспетчер конфигурации SQL Server

При этом отключение протокола TCP/IP необязательно.

Как проверить что 1С использует Shared Memory?

Существует два способа:

1. С помощью запроса в Management Studio

Запускаем на исполнение запрос:

Исполнение запроса

В результате получаем:

Проверка использования Shared Memory

Во второй колонке видим результат «Shared Memory», то есть нужный нам протокол работает.

2. С помощью SQL Profiler

  • Заходим в базу 1С (для установления соединения с СУБД)
  • Запускаем SQL Profiler и подключаемся к нашему серверу СУБД
  • Включаем сбор события ExistingConnection, выполняя следующее:
    • На закладке «Выбор событий» включаем флаги «Показать все столбцы» и «Показать все события»
    • Выбираем класс событий «Sessions» и включаем событие «ExistingConnection»
    • По кнопке «Фильтры столбцов» устанавливаем фильтр на имя приложения

Фильтр трассировки

При трассировке увидим следующее:

Local Procedure Call

В нижней части окна должна отображаться надпись: «network protocol: LPC», расшифровывается как «Local Procedure Call». Это говорит о том, что протокол Shared Memory включен и используется.

Некоторые источники отмечают, что данный протокол не начинал работать, пока в качестве сервера СУБД не прописали localhost для информационной базы «1С:Предприятия».

Бурмистров Андрей

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте — http://vk.com/kursypo1c.

Если Вы еще не вступили в группу — сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Если Вы уже участник группы — нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
Станьте экспертом по оптимизации 1С, изучив наш курс
«Ускорение и оптимизация систем на 1С:Предприятие 8.3 (2016). Подготовка на 1С:Эксперт по технологическим вопросам»

Содержание курса и форма заказа: http://курсы-по-1с.рф/1c-v8/optimization/

35 учебных часов, подготовка к 1С:Эксперт, правильная настройка серверной части, оптимизация кода, мониторинг загруженности оборудования и прочие взрослые вещи.

13 Responses to Как ускорить 1С за 5 минут – Протокол Shared Memory

  • Михаил

    Добрый день!
    В один момент на сервере почти всё дисковое пространство, как сказали ИТ-специалисты, «съело» именно из-за Shared memory.
    Имеет ли под собой основание данное утверждение?
    (помогла только перезагрузка)
    Спасибо.

    • Андрей Бурмистров

      Интересно на чем были основаны их выводы. Не зная подробностей могу только фантазировать и предположить что на сервере закончилась свободная оперативная память и система ушла в своп. Даже если и так то причину надо искать не в SM, а расследовать почему закончилась свободная память.

  • SkorikA

    В свое время встречал на партнерском форуме рекомендацию (к сожалению сейчас доступа туда нет, не могу привести ссылку) если есть проблемы с использованием протокола Shared Memory указывать сервер баз данных (в консоли кластера — параметры информационной базы) как lpc:ИмяСервера (например lpc:db01).
    Насчет «localhost» рекомендацию слышу впервые.

  • 1979system

    Добрый день. У меня запрос выдает следующее:

    1CV83 Server TCP
    SQLAgent — Generic Refresher Shared memory
    1CV83 Server TCP
    SQLAgent — Job invocation engine Shared memory
    1CV83 Server TCP
    1CV83 Server TCP
    1CV83 Server TCP

    грешу на «Некоторые источники отмечают, что данный протокол не начинал работать, пока в качестве сервера СУБД не прописали localhost для информационной базы «1С:Предприятия».»

    но где это включается? в Администрирование серверов 1С-Информационные базы — «название базы» — свойства — «Сервер базы данных» ?

    • Андрей Бурмистров

      Попробуйте перезагрузить службу сервера 1С и СУБД.
      Насчет localhost, это прописывается в свойствах базы в консоли кластера.

  • Кирилл

    Сделал все как указано в инструкции. Отключил все кроме shared memory. Перезапустил. В итоге запрос выдает 1CV82 Server Named pipe. Что не так?

    • Андрей Бурмистров

      Иногда протокол начинает работать только после перезапуска служб сервера 1С и сервера СУБД.

  • sahsa

    Протестировал свой сервер (1с сервер и sql2012 на одной машине) протокол включен и с порядком «1» но в профайлере показывает что 1с работает наTCP, попробовал выключить совсем все кроме shared memory в результате база даже не могла запуститься с ошибкой что не найден сервер sql… :( может в 2012 есть нюансы?

    • Андрей Бурмистров

      Настраивается также, попробуйте остановить сервер 1С и сервер SQL. Потом сначала запускаете SQL сервер, после этого сервер 1С.
      Часто это решает проблему.

  • Александр

    Есть ли смысл включать этот протокол, если сервер субд и сервер 1с находятся физически на одном сервере, но на разных виртуальных машинах, запущенных на нем?
    Заранее спасибо!

    • Андрей Бурмистров

      Думаю что нет, т.к. они друг друга не «увидят».

  • rvk

    Что делать, если результат выходит вот такой?

    1CV82 Server Shared memory
    1CV82 Server Shared memory
    1CV82 Server TCP
    1CV82 Server TCP
    1CV82 Server TCP
    1CV82 Server Shared memory
    1CV82 Server TCP
    1CV82 Server Shared memory
    1CV82 Server TCP
    1CV82 Server Shared memory

    • Андрей Бурмистров

      Все остановить и перезагрузить сервер 1С и SQL. Потом можно проверить еще раз через профайлер.
      Так же возможно у вас остановлено несколько серверов 1С и один из них не поддерживает Shared memory.

Написать ответ

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