vk fb tw rss

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

Ускорение 1С

 

Данный способ работает только в том случае, если сервер приложений и сервер СУБД расположены на одном компьютере. При этом необходимо использовать версию платформы не ниже чем 8.2.17. Поддержка данного протокола началась именно с этой версии. Настройка выполняется крайне легко и займет не более 5 минут вашего времени.

 

Скорость нужна, а поспешность вредна

 

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

По умолчанию сервер 1С взаимодействует с MS SQL Server только через протокол TCP/IP, не зависимо от того находится сервер приложений и СУБД на одном компьютере или на разных. Это логично и правильно если сервера 1С и СУБД разнесены по разным компьютерам, т.к. другого выхода нет.

Но если они находятся на одной машине, то логичнее, а главное быстрее, использовать для обмена данными оперативную память, т.е. протокол Shared Memory (общая память). Данный протокол позволяет увеличить скорость обмена данными между сервером 1С и СУБД за счет отсутствия передачи данных по сети. Особенно сильно ускорение будет заметно на длительных операциях, где идут частые вызовы сервера. В таких условиях прирост производительности может достигать 10-15%.

 

Включение Shared Memory

  • Открываем приложение «Диспетчер конфигурации SQL Server»
  • Настройка SQL Native Client – Клиентские протоколы – Общая память – Включено = Да – Ok

2

 

 

 

 

  • Перезапускаем службу MS SQL Server

 

Протокол TCP/IP отключать не обязательно, если вы все настроили правильно, то по умолчанию должен работать именно Shared Memory.

 

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

Есть 2 способа:

1. Самый быстрый и простой способ с помощью запроса в Management Studio

Выполняем запрос:

SELECT PROGRAM_NAME, net_transport
FROM sys.dm_exec_sessions AS T1
LEFT JOIN sys.dm_exec_connections AS T2
ON T1.session_id=T2.session_id
WHERE T1.program_name LIKE '1CV8%'

 

5

 

Как не трудно догадаться, если во второй колонке значение Shared Memory, значит протокол работает.

 

2. Способ посложнее, для любителей поработать с SQL Profiler

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

3

    • В трассировка должна наблюдаться примерно следующая картина

4

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

 

Вот собственно и все, настройка завершена.

 

Даже если все настроено верно, то Shared Memory может не работать по нескольким причинам:

1. В некоторых источниках говорится что Shared Memory не работал до тех пор, пока для информационной базы в качестве сервера СУБД не прописали localhost.

2. Если у вас на сервере СУБД настроен failover cluster

 

Если у вас возникли сложности с настройкой протокол Shared Memory пишите в комментариях или на наш форум.

 

Друзья, давайте не будем теряться на просторах интернета!  Я предлагаю вам получать на e-mail извещения о публикации новых статей и материалов, таким образом вы всегда будете в курсе самых интересных новостей!

 



Лучшие материалы по теме

Расскажите своим друзьям
Вам ничего не стоит, а им будет интересно
Подпишитесь на обновления
Ваш e-mail: * Ваше имя: *


Обсудить Вконтакте


Обсудить в Facebook

10 комментариев: Протокол Shared Memory или как ускорить 1С на 10% за 5 минут

  • по каким правилам SQL Serv выбирает протокол? 2012 SQL с настройками, как в статье, цепляет 1С8.2 то по shared memory, то по TCP IP

    • Выбирает не SQL Server, а приложение.
      До 8.2.17 1C могла работать только по TCP IP, начиная с этой версии может и по SharedMemory.
      Сложно сказать почему у вас работает то так, то эдак. Надо разбираться, может настройки неправильные, может глюки в платформе или еще что-нибудь.
      Попробуйте отключить TCP IP в тестовых целях и посмотреть будет ли работать через память.

      • Не выбирает упорно. 8.2.17.143, windows 2008 r2, sql 2005 со всеми RU и SP. Переходит на named pipes

        • Пробовали перезагружать службы сервера 1С и сервера СУБД?
          Если не помогает, тогда удаленно ничего не смогу подсказать, надо смотреть и разбираться. В любом случае это не критично.

          • Все довольно просто решается. сервер баз данных при совмещении ролей надо прописывать не по IP и не по внешнему DNS имяни, а localhost тогда 1с цепляет SharedMemory

            • Как раз по этому в конце статьи написано:

              В некоторых источниках говорится что Shared Memory не работал до тех пор, пока для информационной базы в качестве сервера СУБД не прописали localhost.

          • Пробовал. И сервер БД пробовал прописывать как «localhost». Работа по протоколу SharedMemory случилась только при переходе на SQL Server 2008 R2. Разницы в производительности замечено не было.

            • Разница будет заметна только на длительных операциях в активной передачей данных между клиентом и сервером.

  • А если SQL Server не MS, а PostgreSQL?

    • К сожалению с PostgreSQL практически не работал, поэтому не могу подсказать. Наверняка в сети есть информация на этот счет.

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

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