1. Главная страница » Компьютеры

1С sql shared memory

Автор: | 16.12.2019

В этой статье я расскажу о протоколе «Общая память» (Shared Memory) обмена данными в MS SQL Server 2012 (справедливо и для MS SQL Server 2008 (R2)). Данный протокол может использоваться при подключении к SQL-серверу клиента, установленного на том же компьютере, где и запущена служба SQL Server, и при использовании дает ощутимый прирост производительности за счет использования оперативной памяти для передачи данных, и как следствии, ликвидации накладных расходов при обмене данными между приложениями. В системе «1С:Предприятие» 8 начиная с версии 8.2.17 появилась поддержка протокола Shared Memory. По оценкам специалистов фирмы 1С, прирост производительности при использовании протокола «Общая память» (Shared Memory) должен составить от 10 до 15%. На примере совместной работы MS SQL Server 2012 с сервером 1С:Предприятие 8 и рассмотрим настройку данного протокола.

0. Оглавление

1. Включение протокола «Общая память» (Shared Memory) в MS SQL Server

Хоть протокол «Общая память» (Shared Memory) и включен по умолчанию, все же стоит убедиться что данный протокол работает и имеет наивысший приоритет над другими протоколами подключений к MS SQL Server. Для этого запустим оснастку «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager). В Microsoft Windows Server 2012 (R2) ее можно найти в списке всех программ.

Читайте также:  Page fault in nonpaged area netwbw02 sys

В Microsoft Windows Server 2008 (R2) в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Средства настройки» (Configuration Tools) — «Диспетчер конфигурации SQL Server» (SQL Server Configuration Manager)

В запустившейся оснастке раскроем вкладку «Сетевая конфигурация SQL Server» (SQL Server Network Configuration), затем выделим вкладку «Протоколы для » (Protocols for …) (экземпляр по умолчанию называется MSSQLSERVER). В таблице справа увидим используемые для данного экземпляра протоколы. Убедимся, что протокол «Общая память» (Shared Memory) имеет состояние «Включено» (Enabled). В противном случае необходимо кликнуть по данной строке правой кнопкой мыши и в контекстном меню выбрать «Включить» (Enable), после чего перезапустить экземпляр SQL Server.

Далее убедимся что на закладках «Клиентские протоколы» (Client Protocols) настроек клиента «Native Client SQL версии 11.0 (32-разрядная версия)» (SQL Native Client 11.0 Configuration (32bit)) и «Native Client SQL версии 11.0» (SQL Native Client 11.0 Configuration) также включен протокол «Общая память» (Shared Memory), и он имеет порядок — «1», т. е. наивысший приоритет над другими протоколами. Если это не так, необходимо изменить настройки до данного состояния.

2. Настройки строки подключения баз данных в системе «1С:Предприятия»

Как уже говорилось ранее, сервер «1С:Предприятия» должен быть запущен на том же самом компьютере, где и запущенна служба MS SQL Server. Кроме того, формат строки подключения информационных баз к SQL серверу должен быть задан в виде или для экземпляра по умолчанию. Для того, чтобы проверить или изменить это значение необходимо запустить оснастку «Администрирование серверов 1С:Предприятия» (предварительно должна быть установлена). Далее в запустившейся оснастке раскрываем вкладки — «Кластеры» — «Локальный кластер» — «Информационные базы» и вызываем свойства информационной базы выбрав соответствующий пункт контекстного меню.

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

Затем запустим клиент «1С:Предприятие» для данной информационной базы, для инициализации соединения с указанным экземпляром SQL сервера.

3. Просмотр текущих подключений в MS SQL Server

Теперь просмотрим все активные подключения к MS SQL Server, а также протоколы используемые в каждом из подключений. Для этого запустим программу SQL Server Profiler. В Microsoft Windows Server 2012 (R2) ее можно найти в списке всех программ.

В Microsoft Windows Server 2008 (R2) в меню «Пуск» (Start) — «Microsoft SQL Server 2012» — «Средства обеспечения производительности» () — «SQL Server Profiler».

В запустившейся программе выберем в меню «Файл» (File) — «Создать трассировку…» (New Trace…).

В окне соединения с сервером введем имя текущего экземпляра SQL Server, данные для авторизации и нажмем «Соединить» (Connect).

Запуститься окно настройки свойств новой трассировки. Не меняя параметров, перейдем на вкладку «Выбор событий» (Events Selection), снимем отметку со всех событий кроме «ExistingConnection» и нажмем «Запустить» (Run).

Затем в активном окне трассировки увидим все подключения к данному экземпляру SQL Server. Среди них и соединение с именем 1CV83 Server, что соответствует подключению сервера «1С:Предприятия». В столбце TextData увидим используемый для подключения протокол. В данном случае надпись LPC (Local Prpcedure Call) означает использование протокола Shared Memory, что нам и в общем то и требуется.

Посмотреть активные соединения можно также выполнив запрос:

Для этого подключимся к текущему экземпляру SQL Server с помощью программы «SQL Server Management Studio». Далее, в окне программы кликнем правой кнопкой мыши в обозревателе объектов по строке с именем сервера и в контекстном меню выберем «Создать запрос» (New Query).

Вставляем текст запроса в появившейся справа окно и нажимаем кнопку «Выполнить» (Execute) на панели задач. После чего в окне «Результаты» (Results), расположенном ниже, увидим результат выполнения запроса, а именно все текущие соединения с данным экземпляром SQL Server. Среди них и соединение с именем 1CV83 Server и используемым протоколом Shared memory.

4. Соединение с помощью протокола «Именованные каналы» (Name pipe)

Для чистоты эксперимента попробуем подключиться к SQL Server с помощью какого-нибудь другого протокола, например с помощью протокола «Именованные каналы» (Name pipe). Для этого, соответственно, включим поддержку протокола именованных каналов для данного экземпляра SQL Server. Создадим псевдоним экземпляра, например, с именем TEST1. В настройках соединения информационной базы «1С:Предприятия» с сервером баз данных укажем имя только что созданного псевдонима и запустим клиент «1С:Предприятия» для данной информационной базы.

Запускаем заново трассировку и видим, что теперь приложение с именем 1CV83 Server использует протокол Name Pipes.

То же самое увидим выполнив запрос из предыдущего пункта.

Смотрите также:

Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…

В данной статье будут рассмотрены способы лицензирования Microsoft SQL Server 2012. Будет приведен краткий обзор каждого из способов лицензирования, а также указаны возможные варианты лицензирования для различных выпусков MS SQL Server…

Microsoft SQL Server 2012 / 2008 включает в себя 9 предопределенных серверных ролей. Данные роли определены на уровне сервера и поэтому существуют вне баз данных. Они предусмотрены для удобства администрирования MS…

Мощности процессоров постоянно развиваются, и если раньше для работы 150 пользователей надо было покупать дорогой сервер, то теперь часто с такой задачей может справить правильно подобранный обычный компьютер (мы кстати можем Вам в этом легко помочь!).

Однако очень многие не недооценивают важность настройки сервера, когда роли сервера 1С и сервера СУБД совмещены на одном физическом компьютере.

С свойствах информационной базы должен быть указан или , не указывать ip-адрес, FQDN имен адресации типа sample.gtw-02.office4. example.com

Можно указать протокол в явном виде lpc:

Протокол Shared Memory должен быть с наивысшим приоритетом, ненужные протоколы отключены или не использоваться. Например если будет tcp: или использоваться alias, то вы не сможете использовать обмен через память. Есть смысл в отдельных случаях отключить
Named Pipes.

Убедиться, что к примеру используется протокол Shared Memory можно следующим образом:

select program_name,net_transport
from sys.dm_exec_sessions as t1
left join sys.dm_exec_connections AS t2 ON t1.session_ > where not t1.program_name is null

Обратите внимание, что в версиях платформы 8.2.17.143 некоторые релизы «переключались» на протокол «именнованых каналов».

Для работы 1С Предприятие 8.2.17 в режиме Shared Memory с SQL Server 2012 должен быть установлен NativeClient от SQL Server 2008 (backward compatibility connectivity components из дистрибутива SQL Server 2012 или отдельный пакет)

Вы также можете обсудить совместную работу серверов в форуме http://www.gilev.ru/forum/

Если у Вас есть необходимость настроить сервер, обратитесь к нам.

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

Как ускорить 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 сервера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)

Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

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

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

13 комментариев для “ Как ускорить 1С за 5 минут – Протокол Shared Memory ”

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

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

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

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

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С и сервера СУБД.

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

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

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

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

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

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