Другие статьи по оптимизации 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 сервера
При этом отключение протокола 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-версия статьи для участников группы ВКонтакте
Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
«Ускорение и оптимизация систем на 1С:Предприятие 8.3 (2016). Подготовка на 1С:Эксперт по технологическим вопросам»
Содержание курса и форма заказа: https://курсы-по-1с.рф/1c-v8/optimization/
35 учебных часов, подготовка к 1С:Эксперт, правильная настройка серверной части, оптимизация кода, мониторинг загруженности оборудования и прочие взрослые вещи.
Добрый день!
В один момент на сервере почти всё дисковое пространство, как сказали ИТ-специалисты, “съело” именно из-за 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с находятся физически на одном сервере, но на разных виртуальных машинах, запущенных на нем?
Заранее спасибо!
Думаю что нет, т.к. они друг друга не «увидят».
Что делать, если результат выходит вот такой?
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.