Эта статья содержит информацию о процедуре установки 1С в клиент-серверном варианте.

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

Установить 1С на клиентских компьютерах, с которых будет осуществляться подключение к серверу.

Установка на клиентских компьютерах ничем не отличается от способа, описанного ранее в статье “Администрирование 1С”.

Создать информационную базу в SQL.

Создание информационной базы в SQL тоже очень похоже на создание базы в файловом варианте. Разница заключается в том, что на этапе выбора типа расположения информационной базы необходимо выбрать “На сервере 1С:Предприятия”.

В пункте “Кластер серверов” укажите имя (а лучше IP-адрес) сервера, на который устанавливали SQL.

В пункте “Имя информационной базы” укажите любое имя, которое хотите дать базе.

Тип СУБД – SQL.

Пользователь базы данных и его пароль – тот самый суперпользователь, о котором говорилось выше, на этапе установки MS SQL.

Смещение дат оставьте по умолчанию.

Необходимо отметить пункт “Создать базу данных в случае ее отсутствия” и нажать “Далее”.

Теперь база успешно создана на сервере SQL и добавлена в список доступных баз. Внизу на картинке можно увидеть результат проделанной работы.

Стоить отметить, что созданная база пока еще пустая. Это каркас, место, выделенное в SQL под вашу информационную базу. Для того, чтобы загрузить свою базу в этот каркас – необходимо воспользоваться средствами Выгрузки/Загрузки информационной базы. Процедура Выгрузки/Загрузки также описана в другой нашей статье “Администрирование 1С”.

Для того, чтобы довести систему до идеального состояния в дальнейшем необходимо будет настроить “план обслуживания” созданной базы данных. План обслуживания – это набор процедур, которые SQL будет выполнять регулярно по заданному расписанию. Например, будет регулярно делать резервные копии и удалять временные файлы. Работа с SQL выходит за рамки темы статьи и будет описана в одной из следующих.

2 февраля 2015 в 16:04

Максимально эффективная по скорости работы - серверная схема, для клиент-серверной 1С 8.х

Предисловие

Постоянно сталкивался с высказываниями ИТ специалистов «сеть нагружена на 20%… процессоры на 50%… очередей к дискам мало… Значит сеть и сервера справляются… смотрите код в 1С проблемы исключительно там».

На самом деле происходило следующее (сервер 1С и SQL разнесены на разные компьютеры): сеть практически использовалась по максимуму(эти "20% загрузки сетевого интерфейса " = «20% полезные данные» + «80% потеря на служебной обработке» ). И соответственно из-за малой ширины канала обмена «полезными» данными - SQL сервер с «Сервером 1С» постоянно ожидали друг друга, что вело к малой утилизации ресурсов CPU и дисковой системы.

Ведение: Сначала хочу заострить внимание на том что же такое 1С платформа?.

Итак начнем с главного 1С - построенная на ORM (объектно-реляционном отображении)-система и программист в ней работает не напрямую с реляционным представлением, а с объектами.
ru.wikipedia.org/wiki/ORM

Программист в среде 1С - пишет объектную логику, а за сборку/разборку и запись объектов в «плоский вид» по таблицам базы данных отвечает сама платформа.

Основные "+" и "-" с точки зрения ORM:

"+" Программист в среде ORM получает преимущество в скорости разработки приложения из-за уменьшения количества кода и его простоты по сравнению с исключительно реляционным программным кодом (пример SQL запросы). А также освобождается от написания кода работающего непосредтсвенно с записями в таблицах Реляционной СУБД.* 1

"-" Сложности для создателей «платформ» ORM и проблемы производительности:

Использование реляционной базы данных для хранения объектно-ориентированных данных приводит к «семантическому разрыву», заставляя программистов писать программное обеспечение, которое должно уметь как обрабатывать данные в объектно-ориентированном виде, так и уметь сохранить эти данные в реляционной форме. Эта постоянная необходимость в преобразовании между двумя разными формами данных не только сильно снижает производительность, но и создает трудности для программистов, так как обе формы данных накладывают ограничения друг на друга.

*1«Уточнение». Несмотря на то, что 1С 8.х позволяет работать с реляционно-подобным кодом (только чтение) в объекте 1С «Запрос» - это все-таки не напрямую один-в-один транслируемый в реляционную СУБД запрос к таблицам хранения данных, а прежде всего «Объектный запрос» - также не минующий стадию сборки разборки объектов. Поэтому зачастую вместо много-тысяче строчных «Объектных запросов» - наиболее оптимально по быстродействию кода и скорости разработки - написать объектный не ряляционно-подобный код.

Глава 1: Расмотрим модель клиент-серверной 1С 8.х

Отмечу основные «узкие» места влияющие на производительность:

1) Первое узкое место - это коммуникационная среда передачи данных .
На рисунке стрелками показаны потоки обмена данными, где «красные» - это Реляционная СУБД<->Объектная СУБ, «оранжевые» - синхронизация между Объектными СУБД.
Т.к. при использовании отдельных серверов для СУБД и кластеров 1С – коммуникационная среда это сетевые соединения – то существуют существенные задержки в передаче данных многочисленными мелкими порциями – как из-за латентности самой физической реализации интерфейсов, так и из-за латентности узлов в этой сети.

Рассмотрим на примере сетевого стандарта Ethernet Gigabit (график зависимости скорости передачи данных… ниже )
на примере работы Сервера 1С с MS SQL (по умолчанию размер коммуникационных пакетов 4 кб) :

На графике видно, что при использовании пакетов ДАННЫХ =4 кб пропускная способность рассмотренной сети всего 250 Мегабит/с. (как правильно заметили в комментария к публикаци: это не пакеты протоколов например уровня TCP , а пакеты ДАННЫХ которые генерируют приложения участвующие в обмене)

Из практики: такое разнесение на Два отдельных сервера
MS SQL (сервер №1)< - Ethernet Gigabit ---> «Сервер 1С»(сервер №1)
проигрывало по скорости работы платформы
на 50%
варианту MS SQL (сервер №1) < - Shared Memory (без сети через участок памяти) ---> «Сервер 1С»(сервер №1)… и это уже «на одном высоконагруженном пользовательском сеансе»

2) Узкое место - это количество отдельных компьютеров «кластеров 1С» , чем их больше тем больше затраты на синхронизацию и как следствие уменьшение производительности системы.

3) Узкое место - количество отдельных процессов сервера 1с , чем их больше тем больше затрат на их синхронизацию… Но тут скорей всего необходимо найти «золотую середину» - для обеспечения стабильности. 2*
2* «Уточнение» - для MS Windows существует такое правило:
Процессы дороже чем потоки, что означает применительно к данному случаю на практике следующее: скорость обмена между двумя потоками внутри одного процесса значительно превышает, скорость обмена между потоками находящихся в разных процессах.

Поэтому например «Файловая 1С 8.х» всегда превышает по скорости однопользовательской работы платформы в клиент-серверном варианте. Все просто т.к. в случае «Файловой 1С 8.х» поток «Реляционной СУБД» общается с потоком «Объектной СУБД» внутри одного единого процесса.

4)Узкое место – одно-поточность пользовательского сеанса , т.к. каждый отдельно взятый - пользовательский сеанс не распараллеливается платформой на несколько, то его работа ограничивается использованием ресурсов одного ядра CPU => следовательно желательна максимальная скорость каждого ядра, в этом случае быстродействие платформы 1C например на 10-ядерном CPU по 1 ггц - будет значительно уступать быстродействию платформы на 4-ех ядерном CPU по 3 Ггц – естественно до определенного количества потоков.

Глава 2(Итог): Рассмотрим не масштабируемый и масштабируемый варианты - наиболее эффективных схем для платформы 1с 8.х. для OS Windows (пологаю для Linux ситуация аналогична)

1-Вариант(не масштабируемый). В расчете на 100 «высоконагруженных пользовательских сеанса»

1) эффективен обычный 2-ух сокетный сервер с 4-ех ядерными CPU по 3 Ггц.

3) MS SQL < - Shared memory --> «Сервер 1С»

2-Вариант(масштабируемый). начиная со 100 «высоконагруженных пользовательских сеанса» и далее ….
Тут логичней всего пойти по пути немецкой 1с-ки «Sap HANA»))
Собирать модульный «Супер-компьютер» от фирмы SGI – состоящий из «лезвий» на 2-х сокетных материнских платах, каждое лезвие соединяется друг с другом сложной топологией сверх-быстрого интерконнекта на основе NUMA-чипов, и все находится под управлением единой OS. Т.е. программы внутри такого сервера по определению имеют доступ к ресурсам любого «лезвия».

1) добавляем «лезвия» по необходимой нагрузке… из расчета примерно одно «лезвие» на 100 пользователей.

2) быстрая дисковая система на SSD

3) MS SQL < - Shared memory --> «Сервер 1С»

Для понимания нижеописанного необходимо разъяснить два понятия:

  • Клиент – персональный компьютер или программное обеспечение, единица сети, генерирующая запросы к серверу с целью получения или обработки каких-либо данных;
  • Сервер – мощный компьютер со значительными производственными возможностями или программное обеспечение, формирующий ответы на запросы клиента.

Клиент-серверная архитектура предполагает взаимодействие клиентского приложения с сервером информационных баз данных посредством специального приложения – сервера 1С:Предприятия.

Установка MSSQL на серверную машину описывается во многих руководствах с возможной вариативностью в зависимости от SQL-версии и версии серверной операционной системы.


1. В имеющемся дистрибутиве необходимо запустить файл установки setup.exe (для продолжения потребуются Microsoft.NET Framework и операционный установщик Windows Installer, тоесть желательно чтобы он был установлен предварительно).

2. Предлагается несколько вариантов дальнейшего развития событий: первичная установка, модификация уже установленных компонентов, обновление или их поиск. На этом этапе программа проверяет соответствие минимальным требованиям MSSQL к операционной системе:

3. Необходимо ввести ключ продукта, полученный при покупке лицензионной программы.

4. После на следующем этапе необходимо установить галочку, что принимаете условия лицензионного соглашения:




Переход к последующему шагу осуществляется при нажатии кнопки Next («Далее»).


5. Получаем доступные обновления.

6. Проходим проверку конфигурации (Warning MSCS пропускаем):


7. Выбираем вариант целевого назначения установки:




8. Выбираем компоненты, которые нам необходимы; можно выбрать все (Select All), но вообще для поставленной задачи достаточно основных, а именно для взаимодействия с сервером 1С необходимы только 3 (DatabaseEngineServices [рус.-Службы компонента DatabaseEngine], ClientToolsConnectivity [рус.- Средства связи клиентских средств], ManagementTool [рус.- Средства управления - полный набор]):




9. Еще одна проверка установочной конфигурации:



10. Детальный отчет. Если предварительно не установлен «Microsoft .NET Framework 3.5», то на данном этапе выдаст ошибку. Нажимаем кнопку «Next»:







12. Проверка доступного пространства на выбранном диске:




13. Настройки на последующих шагах рекомендуется оставить по умолчанию (хотя можно завести отдельного пользователя для MSSQL), переход осуществляется по кнопке Next (обратите внимание, чтобы загрузка SQL Service Agent (Агент Службы SQL) была установлена как автоматически):


14. Еще один важный этап – выбор порядка сортировки (Collation). После инсталляции изменить крайне проблематично:




15. В следующем шаге необходимо выбрать возможность смешанного варианта запуска, добавить пароль для пользователя "sa" и добавить текущего пользователя, который будет обладать правами администратора системы (кнопка «Add Current User»):



Установка MS SQL server 2016 SP1 для 1С.

Решил создать небольшую пошаговую инструкцию по установке MS SQL server 2016.

(Если нужно больше, тогда )

Год назад о том, как установить MS SQL server 2016 (версию для тестирования, на тот момент).

Теперь в установке есть небольшие отличия, поэтому считаю, что инструкция будет не лишняя.

Устанавливать эту СУБД мы будем на Windows server 2012 R2.

Первым делом на сайте Microsoft нужно скачать веб установщик «сиквела» я брал версию «Evaluation» тестового периода в 180 дней будет более чем достаточно, чтоб оценить версию, и позаботится о лицензировании. Лицензирование довольно простое!

Чтоб получить версию, к примеру, Standard нужно будет всего лишь ввести ключ продукта соответствующей версии MS SQL.

И так установка.

Если Веб установщик уже скачали тогда двойным кликом по этому приложению, запускаем его.

Затем нужно выбрать тип установки:

Так мы скачаем образ ISO и сможем его установить позже, например, после физической подготовки сервера под СУБД.

Выбираем язык «Русский», Пакет ISO 2372 MB и укажем расположение файла пакета установки.

И затем кликаем по кнопке «Скачать».

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

Если видим картинку «Скачивание успешно завершено», тогда кликаем по кнопке «Открыть папку» там вы найдете образ ISO пакета установки.

Теперь можно приступить к распаковке образа ISO (Или можете его записать на диск).

Правый клик мышкой по файлу и распакуем его.

После распаковки ищем setup (иконка зеленого цвета).

Двойной клик и приступаем к установке MS SQL server 2016.

Выбираем вверху «Новая установка изолированного экземпляра SQL server.

Затем на следующим шаге принимаем условия лицензионного соглашения, поставив птичку возле: «Я принимаю условия лицензионного соглашения».

На следующем шаге ставим птичку возле «Использовать центр обновления..» .

MS SQL server нужно держать в актуальном состоянии, поэтому стоит устанавливать все обновления которые выходят.

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

Из возможных основных проблем:

1. Не установлен.NET Framework.

2. Включен брандмауэр.

Затем на следующей вкладке нам нужно поставить только одну птичку вверху.

«Службы ядра СУБД».

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

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

На следующей вкладке сперва установим переключатель возле «Смешанный режим (Проверка подлинности SQL server и Windows)».

И создадим пароль для нашего рута SA.

Затем назначим администратора сервера СУБД, кликнув по кнопке «Добавить текущего пользователя» или можете выбрать другого пользователя.

И в этом же окне перейдем на вкладку «Каталоги данных» .

Нам нужно указать каталоги для баз данных 1С.

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

Каталог журналов пользовательских баз данных.

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

Как оптимизировать работу MS SQL для 1С.

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

Затем на следующей вкладке кликам по кнопке «Установить» и дожидаемся завершения установки. (Процесс не быстрый, можно попить кофе).

После установки стоит удостовериться в том, что собственно она прошла успешно.

Если видим что стоят все зеленые птички возле компонентов, тогда все отлично MS SQL server 2016 мы успешно установили.

Теперь нам нужно установить утилиту администрирования нашего сервера СУБД.

«Management Studio» (SSMS).

Для этого возвращаемся в каталог, где мы распаковали пакет установщика.

Кликаем еще раз по зеленой иконке Setup и выбираем «Установка средств управления SQL server». Снова откроется сайт Microsoft, где нам нужно скачать веб установщик «Management Studio» (SSMS).

Установка Management Studio (SSMS).

Обновление статистики базы данных

(один или несколько раз в день)

Если вручную, то выполняем процедуры:

Exec sp_msforeachtable N"UPDATE STATISTICS ? WITH FULLSCAN" DBCC UPDATEUSAGE (dbname)

Через графический интерфейс:

Очистка процедураного кэша СУБД

(после обновления статистики)

Выполняем процедуру

DBCC FREEPROCCACHE

Реиндексация базы данных

(раз в сутки в не рабочее время)

Если вручную, то

Sp_msforeachtable N"DBCC DBREINDEX (""?"")"

Через графический интерфейс:

Используйте анализа фрагментированности для снижения нагрузки

Для больших баз данных нужно уменьшать ненужные операции по дефрагментации тех , для которых это не требуется.

Функция таблицы динамического управления sys.dm_db_index_physical_stats возвращает процент фрагментации в столбце avg_fragmentation_in_percent . Если значение в этом столбце превышает 25%, то для восстановления исходных параметров производительности рекомендуется выполнить дефрагментацию/реиндексацию этого индекса.

Еще проще, воспользовшись отчетом:

Настройте резервное копирование

Не забудьте настроить автоматический для вашей базы данных. Это существенно дешевле, чем не делать бэкап и без нервов:) . Хотя бы раз в неделю проверяйте, что не закончилось место и восстанавливайте бэкап в копию базы для проверки а спасет ли бэкап, "если что"...

Уменьшение размера базы (лога) данных

Уменьшить базу данных можно или с помощью графического интерфейса приложения SQL Server Management Studio.
Первый случай выполняется посредством вызова контекстного меню на необходимой базе и выбора Tasks - Shrink - Database.
Второй случай опишем несколько подробнее. Ниже приведен скрипт уменьшения лога:

DBCC shrinkdatabase(N"base1c", TRUNCATE_ONLY); /*усечение всей базы*/

use DBCC SHRINKFILE (N"base1c_Data", 101); /*усечение только файла данных до размера 101 мб*/

use DBCC SHRINKFILE (N"base1c_Log", 0); /*усечение только файла транзакций до размера 0 мб*/

CHECKPOINT; /*Записывает все данных из буферного кэша в текущей базе данных на диск*/

BACKUP LOG TO DISK = N"F:\log\base1c.bak" WITH TRUNCATE_ONLY /*очистка журнала транзакций */

где:
base1c - имя базы данных
F:\log\base1c.bak - путь к файлу бэкапа лога