Shared memory 1с как включить

Обновлено: 04.07.2024

Как ускорить 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-версия статьи для участников группы ВКонтакте

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

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

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

    Комментарии / обсуждение (13):

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

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

    • Рассмотрены возможности ускорения «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С:Предприятия».

      Обратите внимание, что настройки кластера отвечают за настройки всех серверов принадлежащих настраиваемому кластеру. Кластер подразумевает работу нескольких физических или виртуальных серверов, работающих с одними и теми же информационными базами.

      Интервал перезапуска – отвечает за частоту перезапуска рабочих процессов кластера. Этот параметр необходимо выставлять при круглосуточной работы сервера. Рекомендуется частоту перезапуска связывать с технологическим циклом информационных баз кластера. Обычно это каждые 24 часа (86400 сек). Как известно, рабочие процессы серверов 1С обрабатывают и хранят рабочие данные.

      Автоматический перезапуск был разработан в платформе «для минимизации отрицательных последствий фрагментации и утечки памяти в рабочих процессах». На ИТС есть даже информация о том, как организовать перезапуск рабочих процессов по другим параметрам (объем памяти, занимаемые ресурсы и т.п.).

      Допустимый объем памяти – защищает сервера 1С от перерасхода памяти. При превышении процессом этого объема в интервале превышения допустимого объема, процесс перезапускается. Можно рассчитать как максимальный размер памяти, занимаемый процессами «rphost» в периоды пиковой нагрузки серверов. Также стоит установить небольшой интервал превышения допустимого объема.

      Допустимое отклонение количества ошибок сервера. Платформа рассчитывает среднее количество ошибок сервера по отношению к числу обращений к серверу в течение 5 минут. Если это отношение превысит допустимое, то рабочий процесс считается «проблемным», и может быть завершен системой, если установлен флаг «Принудительно завершать проблемные процессы».

      Выключенные процессы останавливать через. При превышении допустимого объема памяти, рабочий процесс не завершается сразу, а становится «выключенным», чтобы было время «перенести» рабочие данные без потери на новый запущенный рабочий процесс. Если указан этот параметр, то «выключенный» процесс в любом случае завершится по истечении этого времени. Если наблюдаются «зависшие» рабочие процессы в работе сервера 1С, то можно стоит этот параметр на 2-5 минут.
      Эти настройки устанавливаются для каждого сервера 1С индивидуально.

      Максимальный объем памяти рабочих процессов – это объем совокупной памяти, которую могут занимать рабочие процессы (rphost) на текущем кластере. Если параметр установлен в «0», то занимает 80% оперативной памяти сервера. «-1» - без ограничений. Когда на одном сервере работают СУБД и сервер 1С, им нужно делить между собой оперативную память. Если в процессе эксплуатации обнаружится, что серверу СУБД не хватает памяти, то можно ограничить память, выделяемую серверу 1С с помощью этого параметра. Если СУБД и 1С разделены по серверам, то имеет смысл рассчитать этого параметр по формуле:

      «Max объем» = «Общая оперативная память» – «Оперативная память ОС»;

      «Оперативная память ОС» рассчитывается по принципу 1 Гб на каждые 16 Гб оперативной памяти сервера

      Безопасный расход памяти за один вызов. В общем случае, отдельные вызовы не должны занимать всю оперативную память, выделенную рабочему процессу. Если параметр установлен в «0», то объем безопасного расхода будет равен 5 % от «Максимального объема памяти рабочих процессов». «-1» - без ограничения, что крайне не рекомендуется. В большинстве случаев этот параметр лучше оставлять «0».

      С помощью параметров «Количество ИБ на процесс» и «Количество соединений на процесс» можно управлять распределением работы сервера 1С по рабочим процессам. Например, запускать под каждую информационную базу отдельный «rphost», чтобы в случае «падений» процесса, отключались только пользователи одной базы. Эти параметры стоит подбирать индивидуально под каждую конфигурацию сервера.

      2. Рекомендации по настройке СУБД MS SQ

      Ограничение на использование оперативной памяти сервером СУБД – У сервера СУБД MS SQL есть одна замечательная особенность – он любит загружать базы, с которыми ведется активная работа в оперативную память полностью. Если его не ограничивать, то он заберет себе всю оперативную память, какую только сможет.

      • Если сервер 1С:Предприятия установлен вместе с Microsoft SQL Server, то верхний порог памяти необходимо уменьшить на величину, достаточную для работы сервера 1С.
      • Если на сервере работает только СУБД, то для СУБД по формуле:

      «Память СУБД» = «Общая оперативная память» – «Оперативная память ОС»;

      Shared memory – об этом параметре известно много, но до сих пор встречается, что про него забывают. Выставляем в «1», если сервер 1С и СУБД работают на одном физическом или виртуальном сервере. Кстати, работает, начиная с платформы 8.2.17.

      Max degree of parallelism – определяет, сколько процессоров используется при выполнении одного запроса. СУБД распараллеливается получение данных при выполнении сложных запросов на несколько потоков. Для 1С рекомендуется устанавливать в «1», то есть одним потоком.

      Авторасширение файлов БД - определяем шаг в МБ, с которым «расширяется» файл базы данных. Если шаг будет маленький, то при активном росте БД, частые расширения приведут к дополнительной нагрузке на дисковую систему. Лучше установить в 500 – 1000 МБ.

      Реиндексация и дефрагментация индексов – рекомендуется делать дефрагментацию/реиндексацию хотя бы раз в неделю. Реиндексация блокирует таблицы, поэтому лучше запускать в нерабочее время или периоды минимальной нагрузки. Нет смысла делать дефрагментацию после перестроения индекса (реиндексации). По рекомендации Microsoft дефрагментацию делают в том случае, если фрагментация индекса не превышает 30 %. Если выше, рекомендуется сделать реиндексацию.

      Обновление статистики - рекомендуется обновлять статистику хотя бы 1 раз в день. Статистика отвечает за производительность выполнения запросов.

      План электропитания – в настройках электропитания операционной системы установить на высокую производительность.

      В этой статье я расскажу о протоколе «Общая память» (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) ее можно найти в списке всех программ.

      Firewall_Windows_MS_SQL_Server_2012_01

      Firewall_Windows_MS_SQL_Server_2012_02

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

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

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

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

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

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

      В окне соединения с сервером введем имя текущего экземпляра 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…

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

      В сегодняшнюю подборку вопросов из Мастер-групп мы включили вопросы, касающиеся поиска причин повышенного потребления памяти на сервере 1С:Предприятия, анализа информации о неактуальных лицензиях 1С, некорректного переподключения внешних обработок (отчетов).

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


      Я так понимаю, что в неправильном направлении думаю. Направьте в правильном.

      Ответ:

      • LEAKS — события, связанные с утечкой памяти, которые могут быть вызваны ошибками в коде конфигурации. Здесь могут иметь место циклические ссылки, ошибки в платформе и т.п.
      • MEM — события, связанные с увеличением объема памяти, занятой серверными процессами (ragent, rmngr, rphost). Помимо непосредственно расхода памяти сеансами может быть расход и самими процессами.
      Это пример разобранного вопроса из Мастер-группы курса
      Ускорение и оптимизация систем на 1С:Предприятие 8.3 + подготовка на 1С:Эксперт .


      Вопрос №2: Почему в информации о лицензиях 1С отображаются неактуальные лицензии?

      В нашей компании в сети имелись программные многопользовательские лицензии + ключи USB:
      1. Сервер 1 HASP4 ORGL8 20
      2. Сервер 2 HASP4 ORGL8 20
      3. ПК доступный в сети HASP4 ORGL8 10

      Мы сдали все USB ключи в апгрейд на один USB на HASP4 ORGL8 50. Теперь имеем программные лицензии + HASP4 ORGL8 50. Но в информационных базах видна информация по лицензиям, в том числе по старым ключам, которых физически нет в сети:

      Сетевой HASP4 ORGL8 50, получило клиентское приложение

      Информационная база:

      Сетевой HASP4 ORGL8 20

      Сетевой HASP4 ORGL8 10

      Локальный HASP4 ORGL8 20

      Локальный HASP4 ORGL8 10

      Подскажите, пожалуйста, почему видим неактуальную информацию по лицензиям? Как её почистить?

      Ответ

      Информация о лицензии разделена на 2 блока – Текущая и Информационная база.

      В блоке Текущая показывается лицензия текущего сеанса – та, которая используется в данный момент. Здесь всё корректно – отображается новая 50-пользовательская лицензия.

      В блоке Информационная база перечисляются все лицензии, с которыми когда-то подключались к этой базе за всё время её существования. Это своего рода “исторические данные”. Поэтому здесь приведены те лицензии, которых у Вас уже нет, но которые использовались ранее для работы с этой базой. Эта информация хранится в базе, удалить её нельзя.

      Можно только создать новую базу, перенести в неё все данные, тогда список использованных ранее лицензий будет пустым.

      Это пример разобранного вопроса из Мастер-группы курса
      Администрирование 1C: развертывание, автоматизация, управление пользователями и поддержка систем на 1С:Предприятие 8 .


      Вопрос №3: Почему при переподключении внешней обработки (отчета) в пользовательском режиме не видно внесенных изменений?

      Ответ

      Сталкивался с таким поведением, тоже приходилось менять имя внешнего отчета. Правда это было достаточно давно.

      Если подключена новая обработка (отчет) с таким же именем, как и подключенная обработка (отчет), то открытые формы от “старой” обработки (отчета) перестают работать (генерируется ошибка).

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

      Предполагаю, что описанное поведение связано с механизмами платформы, обработка ошибочно не переподключается, система определяет её как не изменившуюся.

      Но добиться стабильного воспроизведения проблемы в своё время у меня не получилось, один раз воспроизводилось, десять раз – не воспроизводилось. Поэтому могу предложить использовать расширения вместо внешних обработок.

      Читайте также: