Hare.ru @ Коллективный разум / Hare.ru @ Дикое место

Архив hare.ru 
Мысли, конвертированные в текст

Концептуальные работы


Все статьи раздела

Сеть. Старые песни о главном.

П.П. Моисеенко (pit) (апрель 2002)

Cеть – это технология, позволяющая получить по лбу,
даже когда на грабли наступает кто-то другой.

© Компьютерный фольклор

Вступление. О чём пойдёт речь.

В этой маленькой заметке рассматриваются некоторые аспекты использования серверных ОС при эксплуатации сетевого варианта системы 1С:Предприятие (в DBF-варианте).

Использованные материалы – собственный опыт и архивы форума Территория 1C. Рекомендации с диска ИТС фирмы 1С не использовались – желающие могут просмотреть их самостоятельно. По времени эти рекомендации появились позднее обсуждений на Территории, выводы там приведены без объяснений и в сжатом виде.

Итак, приступим к нашим серверам.

В настоящее время наиболее часто при эксплуатации системы 1С-Предприятие используются следующие серверные ОС – от фирмы Microsoft (Windows NT/2000), от фирмы Novell – Novell NetWare версий 3 и 4. По частоте использования статистика не собиралась, однако можно с уверенностью сказать, что безусловно лидируют сервера Windows. Связано это в основном с отсутствием достаточно количества специалистов по серверному ПО фирмы Novell.

При эксплуатации файл-серверного варианта системы 1С:Предприятия на этих серверах возникает ряд проблем, причём для каждого типа сервера проблемы свои. Рассмотрим кратко эти проблемы.

Проблема #1.

При эксплуатации серверов Windows NT/Windows 2000, если к базе подключено более одного пользователя, резко замедляется скорость работы "1С:Предприятия".

Этот подарок преподнесен нам особенностями работы механизма кэширования Window NT/2000. Если база лежит на NT/Win2000, то при одном пользователе будет включен кэш сервера, и при этом не имеет особого значения, как пользователь подключен к базе – монопольно или в разделенном режиме. При подключении второго и последующих пользователей кэш выключается. Повторно он включится для базы только при отключении всех пользователей от этой базы и вторичном подключении к ней первого пользователя.

Эти выводы можно проиллюстрировать примером. Не далее как 14-15 марта 2002 года вопрос в очередной раз был поднят на "Территории 1С". Мною было предложено провести ряд тестов и вот результаты, полученные одним из участником форума.

Тесты производились по следующей методике – тестовый отчет выполнялся при подключении к базе одного пользователя и при подключенном втором, который сам ничего не выполнял (важен сам факт подключения).

"Итак, краткий отчет: имеем две одинаковые базы, обе лежат на сервере Windows 2000 Server. Больше к серверу никто не обращается. К одной из баз подключен один пользователь (это я), ко второй – два пользователя (я и просто еще одна включенная машина, за которой никто не работает).

Обе базы подключены в разделенном режиме для чистоты эксперимента. Затраченное время:

Действие 1 user >1 user Замедление
Расчётный листок на 1-го сотрудника 2.5 сек 16 сек 6.4
Построение расчётной ведомости по предприятию 10 сек 35 сек 3.5
Проведение документа КонецМесяца (1220 проводок) 5 сек 32 сек 13

Используется конфигурация "Расчет зарплаты" фирмы КАМИН для компоненты "Бухгалтерский учет". Ни в коем случае не хочу бросить тень на фирму КАМИН – другие бухи используют доработанную типовую бухгалтерию от 1С – те же проблемы. Основное время при двух пользователях тратится на выполнение запросов по бух. итогам – видно даже визуально при построении отчета.

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

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

Данную ситуацию можно несколько сгладить – если на файл-сервере Windows используется файловая система NTFS, то можно отключить запись последнего времени и даты обращения к файлу для ускорения работы. В NT это делается в параметрах устройства, в Windows 2000 – надо править реестр, а именно ключ

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem

Значение NtfsDisableLastAccessUpdate нужно определить (его по умолчанию нет), тип DWord, установка в единицу (1) запрещает сохранение.

Это несколько ускорит работу с диском, но проблем не решит. Использование SCSI-дисков позволит еще больше снизить разницу, но полность устранить замедление невозможно.

Поведение сервера Novell NetWare в аналогичных тестах дает несколько необычные результаты, впрочем, легко объяснимые.

  • Скорость выполнения отчета практически не зависит от количества подключенных пользователей. Задержка видна только при перегрузке сети.
  • Если после формирования отчета сразу же запустить его повторно – время выполнения может быть до 10 (десяти!) раз меньше – данные лежат в кэше и чтение с диска не производится. Но этот эффект может быть получен только при двух дополнительных условиях – на сервере достаточно памяти под кэш (128-256 мб) и сам кэш правильно настроен (сервер NetWare позволяет выполнить настройку кэша на чтение и запись отдельно). Количество подключенных пользователей – безразлично.

Вывод прост – при использовании файл-серверного варианта системы 1С:Предприятие использование сервера под Windows нежелательно. Однако если нет другого варианта – надо постараться использовать максимально быструю систему ввода-вывода (только SCSI). Этот вывод на самом деле действителен для любых файл-серверных приложений (например, БЭСТ), а не только для 1С.

Можно также предложить использовать программы сторонних производителей, выполняющие кэширование дисков сервера Windows, однако нужно помнить, что для серверов нет таких программ, сертифицированных фирмой Microsoft. Хотя на практике при использовании Windows NT такая вот стороняя программв позволила ускорить работу БЭСТа примерно в два раза.

Проблема #2.

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

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

И при этом возникает проблема, мало кем осознанная и воспринятая (встречается относительно редко, обнаруживается очень трудно). Часть проблемы, связанная с отключением кэша (см. проблему 1), здесь подразумевается, но не обсуждается.

На самом деле в среде Windows работают несколько транспортных механизмов для доступа к файлам. Для работающей в среде сервера программы – это система, обеспечивающая доступ к локальным файлам. Если программа работает на клиентской машине, то могут использоваться два механизма доступа – доступ к сетевому файлу, когда путь к базе прописан в виде \\computer\folder\, и может использоваться механизм маппирования диска. Если работа не интенсивная, то ничего страшного при совместном доступе может и не случиться. При повышении интенсивности работы может случиться следующее – одновременное поступление запросов на запись по двум разным веткам и наложение записи. По внутренним причинам система не всегда нормально строит очередь обращения к файлу из нескольких механизмов доступа. Тогда лучшее, что случится – расхождение бух. итогов или остатков по регистрам, а худшее – разрушение информации в одном из DBF файлов. Эта ошибка возникает достаточно редко, условия ее однозначного возникновения не выяснялись.

Избежать этого можно, используя только один из механизмов доступа, т.е. сделать так, чтобы на сервере все обращения к файлу проходили одним путем. Тогда вышеописанной ситуации не возникнет (система построит очередь и корректно ее обслужит). Но в любом случае, можно дать рекомендацию – пользователя с сервера гнать (ибо помимо возможности разрушения наблюдается еще и эффект дополнительного торможения за счет отключения кэша), а если есть необходимость переиндексации или быстрых обработок базы – запускать программу на сервере только в монопольном режиме (многие практикуют плановую переиндексацию ночью по расписанию). Это нормальное решение проблемы.

При сравнении серверов Windows и NetWare можно сказать следующее (учитывая, что все вышеприведенные особенности рассматриваются в приложении к файл-серверному варианту системы 1С:Предприятие) – наибольшую скорость можно получить при использовании сервера NetWare (версий 3.хх и 4.хх). Однако, следует иметь в виду, что использование этого сервера имеет два недостатка:

  • Несмотря на относительную простоту этих ОС (Novell NetWare), квалифицированных специалистов по ним можно встретить редко.
  • При использовании этого сервера необходимо учитывать, что для нормальной поддержки длинных русских имен файлов на сервере необходимо устанавливать на пользовательских машинах клиента Novel NetWare for MS Windows. Данный клиент поставляется отдельно (на дистрибутивном диске – устаревшая версия). В частности, он имеется на диске ИТС. На сайте фирмы Novell имеется более свежая версия клиента.

    Можно, конечно обойтись и стандартным клиентом от Microsoft – только при этом символы русского алфавита будут преобразованы в верхний регистр.

Использование серверов от Novell не предъявляет особых требований к аппаратному обеспечению. Для построения сервера под потребности 1С:Предприятия (5-25 пользователей) вполне достаточно рядовой офисной машины с памятью 128-256 Mb. Для дисковой подсистемы вполне подойдут диски IDE, лишь бы были нормальные драйверы (в случае использования современных высокоскоростных IDE-адаптеров). Установка SCSI дисков – еще более ускорит работу сервера (в то же время установка SCSI-дисков для сервера Microsoft – обязательная опция).

Могу с уверенность сказать, что сервер NetWare на базе процессора с частотой 200-233 Mhz и памятью 64-128 Mb сравним по времени реакции с сервером Microsoft на процессоре не менее 600-800 Mhz при прочих равных условиях. Объем памяти для Windows-сервера особой роли не играет – но он должен быть не менее 128 Mb.

Терминальный сервер

В связи с вышеперечисленными проблемами с серверами Microsoft все большую популярность при эксплуатации системы 1С:Предприятие приобретают терминальные сервера. За счет снижения сетевого трафика работа 1С:Предприятия ускоряется в несколько раз. Несмотря на проявление все того же недостатка – отключение кэша при втором и более пользователях, такая система позволяет увеличить общую производительность. Нижеприведенные результаты получены еще одним участником Территории 1С:

"Тесты выполнялись следующим образом: первый – при монопольном подключении, второй – разделенный режим и один пользователь, третий – разделенный режим и два пользователя, второй просто подключен.

Конфигурация сервера: PIII-933х2\512\SCSI 18,3х3 (RAID-5)
Конфигурация клиентв: PII-350\128\IDE
Сетка: switch 100-Mb

Отчет "Обороты между субконто Контрагенты и Договора"
... Терминальный режим Обычный режим
Монопольно 2:09 (129 сек) 11:11 (671 сек)
Разделённый (1) 1:18 (198 сек) 11:10 (670 сек)
Разделённый (2) 5:13 (313 сек) >1 ч 20 мин
(не дождались окончания)

Результаты можно интерпретировать следующим образом.

Третья колонка подтверждает результаты в первой таблице. Результат в 670 сек – кэш работает, в нем остались данные от первого прогона (т.е. дисковых операций было меньше). Но разделенный режим требует поддержки блокировок – они отрабатывались по сети довольно долго и в результате время одинаковое.

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

Сравнение второй и третьей колонок между собой показывает эффективность терминального режима работы.

Терминальный сервер – машина далеко не рядовая, должна быть оснащена в обязательном порядке (как и любой сервер от Microsoft) SCSI-дисками, очень желательно иметь пару процессоров, объем оперативной памяти – чем больше, тем лучше, но не менее 1 Gb при 10-15 пользователях.

Реально на практике производительность такого сервера сильно зависит от всех составляющих – оперативной памяти, скорости работы дисковой подсистемы, количества и частоты процессоров.

Использование ОС Windows 9х в качестве ОС для серверной платформы

Достаточно часто встречается также вопрос – почему при попытке подключения третьего (четвертого, пятого) пользователя программа 1С:Предприятие сообщает об ошибке доступа к некоему файлу БД. На самом деле, проблема широко освещается в литературе – системы семейства Windows 9х не позволяют открывать одновременно более 1024 файлов, и строить сеть с использованием Windows 9х можно только при количестве пользователей не более трех (похоже, что трехпользовательская версия 1С:Предприятия как раз и предназначена для этого случая). Этот вариант рассчитан на самый начальный уровень весьма и весьма малого предприятия.

Особенности настройки сервера NetWare

При описании параметров настройки сервера NetWare использована книга – М.Гук, Сети NewWare 3.12-4.1, Питер, Спб, 1997.

После установки программного обеспечения для обеспечения нормальной работы 1С:Предприятия необходимо обязательно настроить 4 параметра (см стр 181):

Set maximum file locks per connection = 1000 (10 - 1 000)
Set maximum record locks per connection = 1000 (10 -1 0000)
Set maximum file locks = 10000 (100 - 100 000)
Set maximum record locks = 100000 (100 - 400 000)

Для их изменения следует на сервере выполнить команду Load servman, далее по меню: Available Options -> Server Parameters -> Categories -> Locks, далее изменить вышеуказанный значения.

При использовании на рабочей станции Novell Client версии не ниже 3.00 необходимо установить на закладке Advansed Settings параметр File Cache Level в значение 0 или 1. В противном случае, с этой рабочей станции не будет выполняться переиндексация.

Параметр Use Extended File Handles нужно установить в положение On.

В принципе, сервер после этого готов к работе. Дополнительно можно настроить некоторые параметры использования кэша, однако установленные умолчания достаточно оптимальны. Краткое описание параметров можно посмотреть на стр 90-92, более подробное – в фирменной документации. Настройку должен выполнять специалист, общих рекомендаций не существует – оптимальные значения нужно определять в конкретных условиях эксплуатации. Более того, при увеличении размера БД и особенно объема информации за месяц, изменение параметров управления кэшем весьма сильно влияет на время отчета

Использование клиентов от Microsoft и Novell

Использование клиента от Novell позволяет при выполнении некоторых мероприятий (при установке сервера NetWare) обеспечить поддержку сервером длинных русских имен, а также сетевые принтеры (установленные не на сервере, а подключенные непосредственно к сети). Однако требуется настройка клиента (см. выше).

Клиент от Microsoft практически не требует настройки, входит в состав Windows (нормальный клиент идёт в поставке начиная с Win98). Полное управление сервером возможно только через клиента от Novell (требуется, однако, только администратору сети). Клиент, находящийся на дистрибутивном носителе Novell NetWare, устарел. Необходимо иметь более свежую версию клиента. Клиент версии 3.30 поставляется на диске ИТС. Более свежая версия доступна на сайте фирмы Novell.

При выборе сервера нужно помнить, что каждой избушке нужны свои игрушки. Просто необходимо учитывать все стоящие перед организацией цели и проблемы. Моих рекомендаций здесь не будет.

Что использовать - сервер Novell или терминальный сервер

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

Типовой набор программного обеспечения небольшой фирмы – Windows, Office, 1С, Банк-Клиент, в бухгалтерии – программы для сдачи отчетности (ПФР, ГНИ), дополнительный набор программ (достаточно малый). Типовое количество пользователей –8-15.

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

При использовании сервера Novell NetWare потребуется увеличивать мощность каждой рабочей станции (в первую очередь наращивание оперативной памяти до 64 Mb, а лучше до 128 Mb). Особых требований к аппаратному обеспечению сервера не предъявляется. Что дешевле – надо считать.

При отказе сервера и наличии копии БД можно быстро запустить работу по усеченному временному варианту (в случае использования типовых бухгалтерской конфигурации и ТиС). Ограниченное количество пользователей каждой конфигурации (по 3 для типовых) сможет продолжить работу.

Так что выбирать надо по потребностям и возможностям.

У терминального сервера есть еще одно достоинство, которое может заставить его использовать даже при наличии нормального файл-сервера. Относительно маленький трафик при работе в режиме терминала позволяет организовать удаленную работу по сети при наличии выделенного канала или радиомодема (online-доступ территориально удаленных пользователей).

Наилучшее по гибкости решение, виденное мною, состоит в следующем.

Сеть наращивалась постепенно и беспланово. Имеются сегменты, построенные на коаксиале, на витой паре 10-Mb и 100-Mb. Физически это несколько организаций (не холдинг, именно несколько организаций).

Пользователей – свыше 50. Все используют локальную сеть для доступа к proxy-серверу (он же выступает почтовым сервером). Некоторой части пользователей сеть нужна только для доступа к сетевому принтеру. Часть работает с общими базами (БЭСТ, 1С, свои программы складского учета, Гарант, Консультант, специфические общие базы). SQL-сервера нет.

Используемый терминал-сервер следующий: 2*ХХХ (частота мне неизвестна), памяти 2 Gb, SCSI-диски (только под базы типа Консультант, Гарант). Двумя сетевыми картами смотрит в сеть (разные сегменты 10 и 100). Третьей картой он смотрит на сервер NetWare (1 процессор, памяти неизвестно, SCSI). Сервер NetWare, в свою очередь, также двумя картами смотрит в сетки (т.е. связь терминал-сервер — файл-сервер выполнена напрямую, машина-машина). Подключение пользовательских машин – с сегмента 10Bse-T только в терминал, со 100-Mb сегмента – с нормальных машин к серверу NetWare, со слабых – в терминал.

1С – все лицензионные, Бухгалтерия 6.0/7.7, ТиС 7.5/7.7, часть ищет хасп (6 и 7.7), часть обижена судьбой (все 7.5). Терминальных сессий с 1С – от 10 до 30 в разные моменты, прямых подключений – примерно столько же. Подключение в разные базы, естественно. С некоторых машин открыты одновременно 1С-сессии в терминале и напрямую (разные базы).

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

Такое решение позволило: использовать тонких клиентов, использовать прямое подключение (все базы физически лежат на сервере NetWare). Полностью используются и возможности кэширования и возможности терминал-сервера.

P.S. Еще раз оговорюсь – все вышеприведенные замечания справедливы только для файл-серверных систем 1С:Предприятия.

Партнеры:


Также может быть интересно:

Канал Россия 1 на http://spbtvonline.ru/
   
 Сайт поддерживается за счет партнеров:
:::... Сайт содержит архив двух версий hare.ru Карта сайта