Как выбрать и настроить сервер для 1C Предприятие 8.3
Чтобы грамотно сконфигурировать сервер для 1С, нужно сначала разложить по полочкам планируемую вычислительную нагрузку. Система «1С: Предприятие 8» требовательна к ресурсам даже в том случае, если пользователей можно по пальцам пересчитать.
Это касается как небольших компаний, использующих базовые конфигурации: «Управление торговлей»,
«Зарплата и Управление Персоналом», «Бухгалтерский учет», так и применяющих версии «Управление
Производственным Предприятием» или «1С: Предприятие 8.3. Сервер приложений».
Если в вашей компании более 100 сотрудников, то потребуется удаленная работа через Remote Desktop, что
потребует дополнительных ресурсов сервера 1С. Во всех перечисленных случаях грамотный подбор сервера,
полностью (или даже с избытком) отвечающего профилю нагрузки — лучший способ избежать традиционных
для использования 1C проблем.
Выбор процессора и определение объема оперативной памяти для сервера 1С Предприятие 8.3
По моим наблюдениям, в компаниях, штат которых не превышает 10 сотрудников, а база 1-5 гигабайт, «1С:
Предприятие 8.3» обычно устанавливается на выделенном компьютере. И компьютер этот работает в
режиме файлового сервера. Такая нагрузка вполне по силам процессорам Intel Core i3 и E3-12xx. А памяти
оперативной нужно не менее 8 гигабайт (из них 2 гигабайта под ОС).
Средним компаниям, где 5 до 25 пользователей работают с базой до 4 гигабайт лучше всего подойдут
четырехядерные Intel Xeon E3-12xx либо AMD Opteron 4ххх. По четыре гигабайта оперативной памяти хватит
для подсистемы «Сервер приложений» и сервера базы данных MS SQL Server. Традиционно 2 гигабайта
займет ОС. Получается около 10 гигабайт, из которых не менее трети рекомендуется отвести для
кеширования базы данных. С учётом рекомендаций производителей процессоров и постоянно
снижающейся цены за гигабайт памяти рекомендуем 16Гб памяти с коррекцией чётности.
В средних и крупных компаниях (100-150 пользователей и БД от 1 гигабайта) с 1C обычно работают в
терминальном режиме. При этом на сервере одновременно запускается и сама система, и пользовательское
приложение. Опыт подсказывает, что серверные процессоры начального уровня для таких задач не
подходят.
Стоит обратить внимание, что когда оперативной памяти недостаточно, ОС может выгрузить «1С:
Предприятие 8.3. Сервер приложений» в файл подкачки (swap file). Нередко в таких ситуациях приложение
может оказаться недоступным на какое-то время. Закономерный вывод – оперативной памяти всегда
должно быть более чем достаточно.
Чтобы рассчитать требуемые для терминального доступа ресурсы, исхожу из того, что одно процессорное
ядро продуктивно обслуживает до 10 пользовательских сессий. Для сеанса из 20 таких сессий будет вполне
достаточно одного высокочастотного процессора, например, Intel Xeon E3-12xx. Из-за особенностей кода
программы 1С четыре быстрых ядра будут работать эффективнее, чем восемь медленных. Если число
пользователей перевалило за 20, а объем базы данных за 4 гигабайта, необходимы двухпроцессорные
решения на Intel Xeon E5-26xx или AMD Opteron 62xx.
Источник
Максимально эффективная по скорости работы — серверная схема, для клиент-серверной 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) «Сервер 1С»(сервер №1)
проигрывало по скорости работы платформы
на 50% варианту MS SQL (сервер №1) «Сервер 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 Ггц.
2) быстрая дисковая система на SSD
3) MS SQL «Сервер 1С»
2-Вариант(масштабируемый). начиная со 100 «высоконагруженных пользовательских сеанса» и далее….
Тут логичней всего пойти по пути немецкой 1с-ки «Sap HANA»))
Собирать модульный «Супер-компьютер» от фирмы SGI – состоящий из «лезвий» на 2-х сокетных материнских платах, каждое лезвие соединяется друг с другом сложной топологией сверх-быстрого интерконнекта на основе NUMA-чипов, и все находится под управлением единой OS. Т.е. программы внутри такого сервера по определению имеют доступ к ресурсам любого «лезвия».
1) добавляем «лезвия» по необходимой нагрузке… из расчета примерно одно «лезвие» на 100 пользователей.
Источник
Как лучше организовать сервер для 1с?
Странный подход указать частоту процессора и память. А сколько ядер, какого типа процессор?
Нужно исходить из размера баз, количества пользователей и интенсивности работы.
Бюджет какой, нагрузка какая, в конце концов — конфа какая?
Под ваше описание сервер от ibm не нужен, тем более с одним винтом.
1С очень любит быструю память, чем ниже тайминги, тем лучше. Еще 1С очень любит высокую частоту процессора, и чем быстрее процессор будет обращаться к памяти, тем лучше.
Я бы взял обычный процессор i7-6700K на 4Ггц и добавил бы к нему ddr4. Если базы помещаются на бытовые ssd диски, то два таких диска в зеркало и в путь. Диски не обязательно серверные типа Intel, вполне подойдут Kingston KC300, они заявляются производителем как «серверные», но стоят денег как бытовые.
Ставить больше двух ssd есть смысл только для увеличения объема, обычные raid-контроллеры не раскроют потенциал рейда скажем на 6 ssd.
Под архивы в тот же сервер воткнуть sata диск на 2-4 тб, можно два таких в зеркало. Плюс копировать архивы на другой ПК или в облако, если позволяет объем.
Сервер БД — только MS SQL. Скорость рабты одной базы на postgres и ms sql у меня отличалась в два-три раза.
Памяти в сервак напихай как можно больше, как минимум её должно быть больше, чем размер самой большой и нагруженной базы. Память будет нужна в первую очередь серверу БД под кэш.
Сервер бд и сервер 1С лучше разместить на одной машине, т.к. 1с шлет множество мелких пакетов в сеть, на обычном железе выгода по скорости будет заметна.
Бэкапы, в случае ms sql, организуются элементарно средствами скуля. Я бы делал полную копию БД каждый день, не заморачиваясь разностными архивами. По мере заполнения хранилища архивов просто прореживайте архивы.
Если есть ИТС, можно делать выгрузку архива в облако из самой 1С средствами конфигурации, если у вас 1С 8.3 и последние версии конфигураций.
Для 6-ти человек хватит и половины указанной конфигурации(если они, конечно, не разработчики).
> Что лучше выбрать в качестве сервера? Обычный пк или сервер?
Серверное железо надёжнее и производительнее, но и дороже. Если есть средства — лучше, конечно, на нём организовывать — но стоит ли покупать компьютер за несколько килобаксов только для развёртывания 1С для нескольких бухгалтеров, которые раз в месяц будут обеспечивать пиковую нагрузку, а в остальное время неспешно отправлять платёжки?
> Можно ли купить обычный компьютер и установить на него Microsoft server 2012?
Безусловно, и серверная ось вовсе не обязательна.
> Ubuntu шеф не хочет даже рассматривать.
Целиком его поддерживаю(я не ubuntu-фоб, но не стоит пихать десктопную ось куда ни попадя, и навешивать на неё лишние функции). Для никсового сервера — Debian, FreeBSD. Кому скучно — Gentoo или Ubuntu.
> Насколько оправдана покупка, например, такого сервера?
(не лучший готовый вариант, т.к. один жесткий диск, следовательно невозможно организовать raid 1)
Снова вопрос — эту конфигурацию хоть на 10% загрузят? Основная нагрузка будет раз в месяц и в основном на проц/оперативку.
> Что нужно еще устанавливать на сервер для корректной работы 1с?
Ничего лишнего, это трата ресурсов. Главное — Сеть. Первым делом проверить, чтобы линк был гигабитным — иначе никакое железо не спасёт. Никаких хабов или свитчей-соток. Прозвонить и переобжать витую.
> Как лучше организовывать бэкапы?
SQLAndFtp — достаточно.
> Нужен ли для этого еще один сервер или можно обойтись, например, компьютером бухгалтера?
Неужели нет отдельного сервера — файлопомойки с самбой и массивом для «особо важного»? В любом случае, хранение бэкапов на одном диске с бухгалтерскими «игрушками» или другими сервисами — зло(хранить бэкапы на одном диске с базой — вообще бессмысленно) — всего один запуск vault — и можно идти в аптеку: за корвалолом для директора/буха и вазелином для себя. Два «красных» двухтерабайтника от двухбуквенного производителя на данный момент обойдутся примерно в 14к деревянных — но спокойствие дороже. Кстати, не будет лишним арендовать VPS или облако за пределами РФ и периодически закидывать туда запароленные архивчики. Помимо этого, сервер пригодится и для других целей.
> Также помимо бухгалтера планируется работа с 1с еще нескольких сотрудников (до 6 человек, включая бухгалтера).
Не страшно.
> Все сотрудники будут находится в пределах одной сети и одного офиса.
Ну, значит, VPN не потребуется 🙂 Не забудьте настроить файрвол.
Источник