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

Доброго времени суток, уважаемые.
Данная заметка является подсказкой мне, и остальным.
Данная информация пригодиться новичкам для создания и оптимизации базы 1С на сервере SQL

Когда у тебя нет опыта работы с серверной частью 1С, то при появлении такого желания и/или необходимости появляется не мало нюансов и не очевидностей.
Печально, что даже такой простой квест, как выбор сервера под 1С не гарантирует успеха, и вы можете столкнутся с его крайне медленной производительностью.
Вот на этапе выяснения, что не так, и может понадобиться понимание того в какой последовательности и что делать.
Начинаем. Не забудьте сделать бекап данных.
Мой сервер базируется на Windows Server 2012 R2 standart, и SQL 2012.
У вас могут быть другие входящие, это не важно (сейчас).
Мы взяли Комплексную поставку УТП (в нее входит 10 клиентских лицензий, сервер (только 32 бит), и конфигурации ЗУП, УТ, Бухгалтерии, и сама УТП. Примечательно что франзайзи во всю хотели включить отдельные поставки, и лучше сразу КОРП. Анализ показал что это лишнее, и дешевле брать комплексную конфигурацию.
При подборе железа вам важно помнить, что в клиент-серверном варианте работе 1С нужно, чтобы частота работы процессора была максимальна, как и частота работы памяти (помните об этом, выбирая железо). (то есть Hyper трейдинг и всякие С1-2-3 state лучше отключить в BIOS).
Так же надо «физически» разносить файл базы (MDF) и лога (LDF) на отдельные жесткие, а не логические диски.
И если для файловой версии оптимально будет рекомендовать SSD, то тут, не все так очевидно.
Зайдите на форум Гилева, чтобы ознакомиться с «загадками», возникающими в попытке улучшить производительность 1С. Много интересного.
В моем случае коллеги админы выдели мне лезвие на блейд сервере, с 2мя физ.процессорами AMD Quad-Core Opteron(tm) Processor 2354, с 16 Гб (667 МГц). Система на 2 дисках в зеркале. Диски под базу выделялись по Fiber chanel, на HP EVA.
Сейчас ищу другую конфигурацию, но пока надо и на этом пожить.
И вот на этапе внедрения, пока ведется анализ как переносить данные из другой ERP системы, 1С программист обратил мое внимание на медленную работу, и долгое проведение документов. То есть систему еще не эксплуатируют, а она уже тормозит и помирает, а перепроведение раза в 3 медленнее, чем у человека на ноутбуке, а с этим еще и люди работать должны будут (3-4 основных, и 25-40 табельщиков).
Не порядок.
Он порекомендовал использовать тест Гилева (легко гуглится его сайт), у которого полного сервисов поддержки, и информации. Чем и воспользовался.
Тест показал что все плохо, и рекомендованное число пользователей отсутствует.
Посмотрев повнимательнее я понял что база и лог хоть на разных дисках - но логических.
И вот для исправления этого и сделал скриншоты и эту памятку на будущее себе и другим:

Создание базы данных в SQL server management studio. Базу и лог разносим на разные физические диски.


Методе восстановления выбираем Simple


Создаем новую базу через клиента 1С на компьютере


Выбираем добавление информационной базы. В нашем случае без конфигурации.


Задаем называние. Здесь любое. Лучше как на сервере.


Заполняем данные. Когда указывал на сервере, имя сервера указывал 127.0.0.1 - иное не работало.


здесь ничего не меняем


Делаем загрузку нашей информационной базы (предварительно имеющейся или новой, например теста)


Собственно выбор базы. Я загружаю тест Гилева для платформы 8.3


Подтверждаем

Подтверждаем



Итог теста. Еще все плохо, но рекомендованное число пользователей больше требуемого, что хорошо.

P.S. Не забывайте делать бекап.
P.P.S запуская тест Гилева в тестовой базе, которая расположена в тех же местах хранения что и любая боевая - имейте ввиду, что как минимум Лог файл стремиться занять все свободное место, что чревато остановкой боевой базы и не прохождением теста!!!
P.P.P.S так же помните, что SQL при работе использует TEMP базу, находящуюся там же, где установлен SQL (по умолчанию на C).
Поэтому доступ к этой базе желательно так же улучшить.

Так же информация в помощь - Effector Saver позволяет сохранять 1с базы
Бекапить все остальное смысла мало, так как в моем случае лицензии программные и при переносе на другое железо лицензии слетают.

Из дополнительного.
Если Вам захочется дать пользователям домена безнаказанно создавать любые БД средствами 1С, то учетной записи службы сервера 1С сделать доменную учетку, имеющую право создавать базы без всяких сисадминов вполне достаточно,
при этом логин и пароль в свойствах информационной базы писать не надо…

Основная цель написания статьи — чтобы не повторять очевидные нюансы тем администраторам (и программистам), которые еще не набрали опыта с 1С.

Вторичная цель, если у меня будут какие-то недочеты, — на Инфостарте мне это укажут быстрее всего.

Неким стандартом "де факто" уже стал тест В. Гилева . Автор на своем сайте дал вполне понятные рекомендации, я же просто приведу некоторые результаты, и прокомментирую наиболее вероятные ошибки. Естественно, что результаты тестирования на Вашем оборудовании могут отличаться, это просто для ориентира, что должно быть и к чему можно стремиться. Сразу хочу отметить, что изменения надо делать пошагово, и после каждого шага проверять, какой результат это дало.

На Инфостарте подобные статьи есть, в соответствующих разделх буду ставить на них ссылки (если пропущу что-то - просьба подсказать в комментариях, добавлю). Итак, предположим у вас тормозит 1С. Как диагностировать проблему, и как понять кто виноват, администратор или программист?

Исходные данные:

Тестируемый компьютер, основной подопытный кролик: HP DL180G6, в комплектации 2*Xeon 5650, 32 Gb, Intel 362i , Win 2008 r2. Для сравнения, сопоставимые результаты в однопоточном тесте показывает Core i3-2100. Оборудование специально взял не самое новое, на современном оборудовании результаты заметно лучше.

Для тестирования разнесенных серверов 1С и SQL, сервер SQL: IBM System 3650 x4, 2*Xeon E5-2630, 32 Gb, Intel 350, Win 2008 r2.

Для проверки 10 Gbit сети использовались Intel 520-DA2 адаптеры.

Файловая версия . (база лежит на сервере в расшаренной папке, клиенты подключаются по сети, протокол CIFS/SMB). Алгоритм по шагам:

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

Подразумевается, что даже для старых компьютеров 10 летней давности (Pentium на 775 socket ) время от нажатия на ярлык 1С:Предприятие до появления окна базы должно пройти меньше минуты. (Celeron = медленная работа).

Если у Вас компьютер хуже, чем пентиум на 775 socket с 1 гб оперативной памяти, то я Вам сочувствую, и комфортной работы на 1С 8.2 в файловой версии Вам будет добиться тяжело. Задумайтесь или об апгрейде (давно пора), или о переходе на терминальный (или web, в случае тонких клиентов и управляемых форм) сервер.

Если компьютер не хуже, то можно пинать администратора. Как минимум — проверить работу сети, антивируса и драйвера защиты HASP.

Если тест Гилева на этом этапе показал 30 "попугаев" и выше, но рабочая база 1С все равно работает медленно - вопросы уже к программисту.

1. Для ориентира, сколько же может "выжать" клиентский компьютер, проверяем работу только этого компьютера, без сети. Тестовую базу ставим на локальный компьютер (на очень быстрый диск). Если на клиентском компьютере нет нормального ССД, то создается рамдиск. Пока, самое простое и бесплатное — Ramdisk enterprise .

Для тестирования версии 8.2 вполне достаточно 256 мб рамдиска, и! Самое главное. После перезагрузки компьютера, с работающим рамдиском, на нем должно быть свободно 100-200 мб. Соответственно, без рамдиска, для нормальной работы свободной памяти должно быть 300-400 мб.

Для тестирования версии 8.3 рамдиска 256 мб хватит, но свободной оперативной памяти надо больше.

При тестировании нужно смотреть на загрузку процессора. В случае, близком к идеальному(рамдиск), локальная файловая 1с при работе загружает 1 ядро процессора. Соответственно, если при тестировании у вас ядро процессора загружено не полностью — ищите слабые места. Немного эмоционально, но в целом корректно, влияние процессора на работу 1С описано . Просто для ориентира, даже на современных Core i3 с высокой частотой вполне реальны цифры 70-80.

Наиболее часто встречающиеся ошибки на этом этапе.

а) Неправильно настроенный антивирус. Антивирусов много, настройки для каждого свои, скажу лишь то, что при грамотной настройке ни веб, ни касперский 1С не мешают. При настройках "по умолчанию" - может отниматься примерно 3-5 попугаев (10-15%).

б) Режим производительности. Почему-то на это мало кто обращает внимания, а эффект - самый весомый. Если нужна скорость - то делать это обязательно, и на клиентских и на серверных компьютерах. (Хорошее описание у Гилева . Единственный нюанс, на некоторых материнских платах если выключить Intel SpeedStep то нельзя включать TurboBoost).

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

Включать режим производительности можно (и желательно) в двух местах:

Через BIOS. Отключить режимы C1, C1E, Intel С-state (C2, C3,C4). В разных биосах они называтся по разному, но смысл один. Искать долго, требуется перезагрузка, но если сделал один раз - потом можно забыть. Если в BIOS все сделать правильно, то скорости добавится. На некоторых материнских платах настройками BIOS можно сделать так, что режим производительности Windows роли играть не будет. (Примеры настройки BIOS у Гилева). Эти настройки в основном касаются серверных процессоров или "продвинутых" BIOS, если Вы такое у себя не нашли, и у вас НЕ Xeon - ничего страшного.

Панель управления - Электропитание - Высокая производительность. Минус - если ТО комптютера давно не проводилось, он будет сильнее гудеть вентилятором, будет больше греться и потреблять больше энергии. Это - плата за производительность.

Как проверить, что режим включен. Запускаем диспетчер задач - быстродействие - монитор ресурсов - ЦП. Дожидаемся, пока процессор ничем не занят.

Это - настройки по умолчанию.

В BIOS C-state включены ,

режим энергопотребления сбалансированный


В BIOS C-state включены , режим высокой производительности

Для Pentium и Core на этом можно остановиться,

из Xeon еще можно выжать немного "попугайчиков"


В BIOS C-state выключены , режим высокой производительности.

Если не использовать Turbo boost - именно так должен выглядеть

сервер, настроенный на производительность


А теперь цифры. Напомню: Intel Xeon 5650, ramdisk. В первом случае тест показывает 23.26, в последнем - 49.5. Разница - почти двухкратная. Цифры могут варьироваться, но соотношение остается практически таким же для Intel Core.

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

в) Turbo Boost. Сначала надо понять, поддерживает ли Ваш процессор эту функцию, например . Если поддерживает, то можно еще вполне легально получить немного производительности. (вопросы разгона по частоте, особенно серверов, касаться не хочу, делайте это на свой страх и риск. Но соглашусь с тем, что повышение Bus speed со 133 до 166 дает очень ощутимый прирост как скорости, так и тепловыделения)

Как включать turbo boost написано, например, . Но! Для 1С есть некоторые нюансы(не самые очевидные). Сложность в том, что максимальный эффект от turbo boost проявляется тогда, когда включены C-state. И получается примерно такая картинка:

Обратите внимание, что множитель - максимальный, частота Core speed - красивейшая, производительность - высокая. Но что же будет в результате с 1с?

Множитель

Core speed (частота), GHz

CPU-Z Single Thread

Тест Гилева Ramdisk

файловый вариант

Тест Гилева Ramdisk

клиент-сервер

Без Turbo boost

C-state off, Turbo boost

53.19

40,32

C-state on, Turbo boost

1080

53,13

23,04

А в итоге получается, что по тестам производительности ЦПУ вариант с множителем 23 впереди, по тестам Гилева в файловой версии - производительность с множителем 22 и 23 одинаковая, а вот в клиент-серверной - вариант с множителем 23 ужас ужас ужас (даже, если C-state выставить на уровень 7, то все равно медленнее, чем с выключенным C-state). Поэтому рекомендация, проверьте оба варианта у себя, и выберите из них лучший. В любом случае, разница 49,5 и 53 попугая - достаточно значительная, тем более это без особых усилий.

Вывод - turbo boost включать обязательно. Напомню, что недостаточно включить пункт Turbo boost в биосе, надо еще посмотреть и другие настройки (BIOS: QPI L0s, L1 - disable, demand scrubbing - disable, Intel SpeedStep - enable, Turbo boost - enable. Панель управления - Электропитание - Высокая производительность). И я бы все-таки (даже для файловой версии) остановился на варианте, где c-state выключен, хоть там множитель и меньше. Получится как-то так...

Достаточно спорным моментом является частота памяти. Например вот частота памяти показывается как очень сильно влияющая. Мои же тесты - такой зависимости не выявили. Я не буду сравнивать DDR 2/3/4, я покажу результаты изменения частоты в пределах одной линейки. Память одна и та же, но в биосе принудительно ставим меньшие частоты.




И результаты тестирования. 1С 8.2.19.83, для файлового варианта локальный рамдиск, для клиент-серверного 1С и SQL на одном компьютере, Shared memory. Turbo boost в обоих вариантах выключен. 8.3 показывает сопоставимые результаты.

Разница - в пределах погрешности измерений. Я специально вытащил скрины CPU-Z чтобы показать, что со сменой частоты меняются и другие параметры, те же CAS Latency и RAS to CAS Delay, что нивелирует изменение частоты. Разница будет тогда, когда физически будут меняться модули памяти, с более медленных на более быстрые, но и там цифры не особо значительные.

2. Когда с процессором и памятью клиентского компьютера разобрались, переходим к следующему очень важному месту - сети. Про тюнинг сети написаны многие тома книг, есть статьи на Инфостарте ( , и другие), здесь я на эту тему заострять внимание не буду. Перед началом тестирования 1С просьба убедиться, что iperf между двумя компьютерами показывает всю полосу (для 1 гбит карточек - ну хотя бы 850 мбит, а лучше 950-980), что выполнены советы Гилева . Потом - самой простой проверкой работы будет, как это ни странно, копирование одного большого файла (5-10 гигабайт) по сети. Косвенным признаком нормальной работы на сети в 1 гбит будет средняя скорость копирования 100 мб/сек, хорошей работы — 120 мб/сек. Хочу обратить внимание, что слабым местом (в том числе) может быть и загруженность процессора. SMB протокол на Linux достаточно плохо параллелится, и во время работы он вполне спокойно может «скушать» одно ядро процессора, и больше не потреблять.

И еще. С настройками по умолчанию windows клиент лучше всего работает с windows server (или даже windows рабочая станция) и протоколом SMB/CIFS, linux клиент (debian, ubuntu остальные не смотрел) лучше работает с linux и NFS (с SMB тоже работает, но на NFS попугаи выше). То, что при линейном копировании вин-линукс сервер на нфс копируется в один поток быстрее, еще ни о чем не говорит. Тюнинг debian для 1С - тема отдельной статьи, я к ней еще не готов, хотя могу сказать, что в файловой версии получал даже немного бОльшую производительность, чем Win вариант на этом же оборудовании, но с postgres при пользователях свыше 50 у меня пока еще все очень плохо.

Самое главное , о чем знают "обжегшиеся" администраторы, но не учитывают начинающие. Есть очень много способов задать путь к базе 1с. Можно сделать \\server\share, можно \\192.168.0.1\share, можно net use z: \\192.168.0.1\share (и в некоторых случаях такой способ тоже сработает, но далеко не всегда) и потом указывать диск Z. Вроде бы все эти пути указывают на одно и то же место, но для 1С есть только один способ, достаточно стабильно дающий нормальную производительность. Так вот, правильно делать надо так:

В командной строке (или в политиках, или как Вам удобно) - делаете net use DriveLetter: \\server\share. Пример: net use m: \\server\bases . Я специально подчеркиваю, НЕ IP адрес, а именно имя сервера. Если сервер по имени не виден - добавьте его в dns на сервере, или локально в файл hosts. Но обращение должно быть по имени. Соответственно - в пути к базе обращаться к этому диску (см картинку).

А теперь я на цифрах покажу, почему именно такой совет. Исходные данные: Карты Intel X520-DA2, Intel 362, Intel 350, Realtek 8169. ОС Win 2008 R2, Win 7, Debian 8. Драйвера последние, обновления применены. Перед тестированием я убедился, что Iperf дает полную полосу (кроме 10 гбит карточек, там получилось только 7.2 Gbit выжать, позже посмотрю почему, тестовый сервер еще не настроен как надо). Диски разные, но везде SSD(специально вставил одиночный диск для тестирования, больше ничем не нагружен) или рейд из SSD. Скорость 100 Mbit получена путем ограничения в настройках адаптера Intel 362. Разницы между 1 Gbit медь Intel 350 и 1 Gbit оптика Intel X520-DA2 (полученной путем ограничения скорости адаптера) не обнаружено. Максимальная производительность, турбобуст выключен (просто для сопоставимости результатов, турбобуст для хороших результатов добавляет чуть меньше 10%, для плохих - вообще может никак не сказаться). Версии 1С 8.2.19.86, 8.3.6.2076. Цифры привожу не все, а только самые интересные, чтобы было с чем сравнивать.

Win 2008 - Win 2008

обращение по ip адресу

Win 2008 - Win 2008

Обращение по имени

Win 2008 - Win 2008

Обращение по ip адресу

Win 2008 - Win 2008

Обращение по имени

Win 2008 - Win 7

Обращение по имени

Win 2008 - Debian

Обращение по имени

Win 2008 - Win 2008

Обращение по ip адресу

Win 2008 - Win 2008

Обращение по имени

11,20 26,18 15,20 43,86 40,65 37,04 16,23 44,64
1С 8.2 11,29 26,18 15,29 43,10 40,65 36,76 15,11 44,10
8.2.19.83 12,15 25,77 15,15 43,10 14,97 42,74
6,13 34,25 14,98 43,10 39,37 37,59 15,53 42,74
1С 8.3 6,61 33,33 15,58 43,86 40,00 37,88 16,23 42,74
8.3.6.2076 33,78 15,53 43,48 39,37 37,59 42,74

Выводы (из таблицы, и из личного опыта. Касается только файловой версии):

По сети можно получить вполне нормальные цифры для работы, если эту сеть нормально настроить, и правильно прописать путь в 1С. Даже первые Core i3 вполне могут давать 40+ попугаев, что достаточно неплохо, причем это не только попугаи, в реальной работе разница тоже заметна. Но! ограничением при работе нескольких (больше 10) пользователей уже будет выступать не сеть, тут 1 Гбит еще хватит, а блокировки при многопользовательской работе (Гилев).

Платформа 1C 8.3 в разы требовательнее к грамотной настройке сети. Базовые настройки - см Гилев , но учтите, что влиять может все. Видел ускорение от того, что деинсталлировали (а не просто отключали) антивирус, от убирания протоколов типа FCoE, от смены драйверов на более старую, но microsoft certified версию (особенно касается дешевых карточек типа асусов и длинков), от убирания второй сетевой карточки из сервера. Очень много вариантов, настраивайте сеть вдумчиво. Вполне может быть ситуация, когда платформа 8.2 дает приемленые цифры, а 8.3 - в два или даже больше раз меньше. Попробуйте поиграться с версиями платформы 8.3, иногда получается очень большой эффект.

1С 8.3.6.2076 (может и более поздние, точную версию еще не искал) по сети все-таки настроить попроще, чем 8.3.7.2008. Добиться от 8.3.7.2008 нормальной работы по сети (в сопоставимых попугаях) получилось всего несколько раз, повторить для более общего случая не смог. Сильно не разбирался, но судя по портянкам от Process Explorer там запись не так идет, как в 8.3.6.

Несмотря на то, что при работе на 100Мбит сети график ее загруженности небольшой, (можно сказать что сеть свободная), скорость работы все равно гораздо меньше, чем на 1 гбит. Причина - задержки (latency) сети.

При прочих равных условиях (хорошо работающей сети) для 1С 8.2 соединение Intel - Realtek медленнее на 10%, чем Intel-Intel. А вот realtek-realtek вообще могут дать резкие проседания на ровном месте. Поэтому, если есть деньги - лучше везде держать сетевые карточки Intel, если денег нет - то Intel ставить только на сервер (ваш К.О.). Да и инструкций по тюнингу интелевых сетевых карточек в разы больше.

Настройки антивирусов по умолчанию (на примере drweb 10 версии) отнимают около 8-10% попугаев. Если настроить как надо (разрешить процессу 1cv8 делать все, хоть это и не безопасно) - скорость такая же, как и без антивируса.

Линуксовым гуру НЕ читать. Сервер с samba это здорово и бесплатно, но если на сервер поставить Win XP или Win7 (а еще лучше - серверные ОС), то в файловой версии 1с будет работать быстрее. Да, и samba и стек протоколов и настройки сети и многое многое другое в debian/ubuntu хорошо тюнингуется, но делать это рекомендуется специалистам. Нет смысла ставить линукс с настройками по умолчанию и потом говорить, что он медленно работает.

Достаточно неплохо проверять работу дисков, подключенных через net use, с помощью fio . По крайней мере будет понятно, или это проблемы с платформой 1С, или с сетью/диском.

Для однопользовательского варианта не могу придумать тесты (или ситуацию) ,где была бы видна разница между 1Гбит и 10 Гбит. Единственное, где 10Гбит для файловой версии дал результат лучше - это подключение дисков по iSCSI, но это тема отдельной статьи. Все-таки считаю, что для файловой версии 1 Гбит карточек достаточно.

Почему при 100 Мбит сети 8.3 работает заметно быстрее 8.2 - не понимаю, но факт имел место быть. Все остальное оборудование, все остальные настройки абсолютно одинаковые, просто в одном случае тестируется 8.2, а в другом - 8.3.

Не тюнингованный NFS win - win или win-lin дает 6 попугаев, в таблицу включать не стал. После тюнинга 25 получил, но нестабильно (разбег в измерениях больше 2 единиц). Пока не могу дать рекомендации по использованию windows и NFS протокола.

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

Терминальный сервер . (база лежит на сервере, клиенты подключаются по сети, протокол RDP). Алгоритм по шагам:

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

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

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

3. При активной работе большого количества пользователей (а здесь уже можно пробовать и 30 человек на одну базу подключить, если постараться) очень желательно поставить SSD диск. Почему-то считается, что диск не особо влияет на работу 1С, но все тесты проводят с включенным на запись кэшем контроллера, что неправильно. Тестовая база маленькая, она вполне помещается в кэш, отсюда и высокие цифры. На реальных (больших) базах все будет совершенно по другому, поэтому для тестов кэш отключен.

Для примера, проверил работу теста Гилева с разными вариантами дисков. Диски ставил из того, что было под рукой, просто тенденцию показать. Разница между 8.3.6.2076 и 8.3.7.2008 небольшая(в варианте Ramdisk Turbo boost 8.3.6 выдает 56.18 а 8.3.7.2008 выдает 55.56, в остальных тестах разница еще меньше). Энергопотребление - максимальная производительность, turbo boost отключен (если не сказано иное).

Raid 10 4x SATA 7200

ATA ST31500341AS

Raid 10 4x SAS 10k

Raid 10 4x SAS 15k

Одиночный SSD

Ramdisk

Включен кэш

RAID контроллера

21,74 28,09 32,47 49,02 50,51 53,76 49,02
1С 8.2 21,65 28,57 32,05 48,54 49,02 53,19
8.2.19.83 21,65 28,41 31,45 48,54 49,50 53,19
33,33 42,74 45,05 51,55 52,08 55,56 51,55
1С 8.3 33,46 42,02 45,05 51,02 52,08 54,95
8.3.7.2008 35,46 43,01 44,64 51,55 52,08 56,18

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

Для платформы 8.2 разница в производительности между SATA и SSD вариантами - более чем в два раза. Это не опечатка. Если во время теста на САТА дисках смотреть на монитор производительности. то там явно видно "Активное время работы диска (в%)" 80-95. Да, если включить кэш самих дисков на запись скорость вырастет до 35, если включить кэш рейд контроллера - до 49 (независимо от того, какие диски тестируются в данный момент). Но это - синтетические попугаи кэша, в реальной работе при больших базах никогда не будет 100% write cache hit ratio.

Скорости даже дешевых ССД (я тестировал на Agility 3) вполне хватает для работы файловой версии. Ресурс записи - другое дело, тут смотреть надо в каждом конкретном случае, понятно, что у Intel 3700 он будет на порядок выше, но там и цена соответствующая. И да, я понимаю, что при тестировании SSD диска я тоже тестирую в бОльшей степени кэш этого диска, реальные результаты будут меньше.

Самым правильным (с моей точки зрения) решением будет выделить 2 ССД диска в зеркальный рейд для файловой базы (или нескольких файловых баз), и ничего больше туда не помещать. Да, при зеркале ССД изнашиваются одинаково, и это минус, но хотя бы от ошибок электроники контроллера хоть как-то застрахованы.

Основные плюсы ССД дисков для файлового варианта появятся тогда, когда будет много баз, и в каждой по несколько пользователей. Если баз 1-2, и пользователей в районе 10, то и SAS дисков хватит. (но в любом случае - смотреть на загрузку этих дисков, хотя бы через perfmon).

Основные плюсы терминального сервера - у него могут быть очень слабые клиенты, и настройки сети на терминальный сервер влияют гораздо меньше (опять ваш К.О.).

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

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

Клиент-серверный вариант .

Тесты проводил только на 8.2, т.к. на 8.3 все достаточно серьезно зависит от версии.

Для тестирования выбирал разные варианты серверов и сети между ними, чтобы показать основные тенденции.

SQL: Xeon E5-2630

SQL: Xeon E5-2630

Fibre channel - SSD

SQL: Xeon E5-2630

Fibre channel - SAS

SQL: Xeon E5-2630

Local SSD

SQL: Xeon E5-2630

Fibre channel - SSD

SQL: Xeon E5-2630

Local SSD

1С: Xeon 5650 =

1С: Xeon 5650 =

Shared memory

1С: Xeon 5650 =

1С: Xeon 5650 =

1С: Xeon 5650 =

16,78 18,23 16,84 28,57 27,78 32,05 34,72 36,50 23,26 40,65 39.37
1С 8.2 17,12 17,06 14,53 29,41 28,41 31,45 34,97 36,23 23,81 40,32 39.06
16,72 16,89 13,44 29,76 28,57 32,05 34,97 36,23 23,26 40,32 39.06

Вроде все интересные варианты рассмотрел,если что-то интересует еще - пишите в комментария, постараюсь сделать.

САС на СХД работает медленнее, чем локальные ССД, даже несмотря на то, что у СХД большие размеры кэша. ССД и локальные и на СХД для теста Гилева работают с сопоставимой скоростью. Какой-то стандартный многопоточный тест (не только записи, а всего оборудования) кроме нагрузочного 1С из ЦУП я не знаю.

Смена сервера 1С с 5520 на 5650 дала практически удвоение производительности. Да, конфигурации серверов не совпадают полностью, но тенденцию показывает (ничего удивительного).

Увеличение частоты на сервере SQL конечно дает эффект, но не такой, как на сервере 1С, MS SQL сервер отлично умеет (если его об этом попросить) использовать многоядерность и свободную память.

Смена сети между 1С и SQL с 1 гбит на 10 гбит дает примерно 10% попугаев. Ожидал большего.

Включение Shared memory эффект все-таки дает, хоть и не 15%, как в описано. Делать обязательно, благо это быстро и просто. Если кто-то при установке дал серверу SQL именованный инстанс, то для работы 1С имя сервера надо указывать не FQDN (будет работать tcp/ip), не через localhost или просто ServerName, а через ServerName\InstanceName, например zz-test\zztest. (Иначе будет ошибка СУБД: Microsoft SQL Server Native Client 10.0: Поставщик общей памяти: Не найдена библиотека общей памяти, использующаяся для установки соединения с SQL Server 2000 . HRESULT=80004005, HRESULT=80004005, HRESULT=80004005, SQLSrvr: SQLSTATE=08001, state=1, Severity=10, native=126, line=0).

Для пользователей меньше 100 единственный смысл для разнесения на два отдельные сервера - это лицензия на Win 2008 Std (и более старые версии), которая поддерживает только 32 Гб ОЗУ. Во всех других случаях - 1С и SQL однозначно надо ставить на один сервер и давать ему побольше (хотя бы 64 Гб) памяти. Давать MS SQL меньше 24-28 Гб ОЗУ - неоправданная жадность (если Вы думате, что у Вас этой памяти ему хватает и все нормально работает - может Вам и файловой версии 1С бы хватило?)

Насколько хуже работает связка 1С и SQL в виртуальной машине - тема отдельной статьи (подсказка - заметно хуже). Даже в Hyper-V все не так однозначно...

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

В многих источниках написано, что отладочный режим (ragent.exe -debug) дает сильное понижение производительности. Ну понижает, да, но 2-3% я бы не назвал значительным эффектом.

Фото Алены Туляковой, ИА «Клерк.Ру»

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

Основная цель написания статьи — чтобы не повторять очевидные нюансы тем администраторам (и программистам), которые еще не набрали опыта с 1С.

Вторичная цель, если у меня будут какие-то недочеты, — на Инфостарте мне это укажут быстрее всего.

Неким стандартом "де факто" уже стал тест В. Гилева . Автор на своем сайте дал вполне понятные рекомендации, я же просто приведу некоторые результаты, и прокомментирую наиболее вероятные ошибки. Естественно, что результаты тестирования на Вашем оборудовании могут отличаться, это просто для ориентира, что должно быть и к чему можно стремиться. Сразу хочу отметить, что изменения надо делать пошагово, и после каждого шага проверять, какой результат это дало.

На Инфостарте подобные статьи есть, в соответствующих разделх буду ставить на них ссылки (если пропущу что-то - просьба подсказать в комментариях, добавлю). Итак, предположим у вас тормозит 1С. Как диагностировать проблему, и как понять кто виноват, администратор или программист?

Исходные данные:

Тестируемый компьютер, основной подопытный кролик: HP DL180G6, в комплектации 2*Xeon 5650, 32 Gb, Intel 362i , Win 2008 r2. Для сравнения, сопоставимые результаты в однопоточном тесте показывает Core i3-2100. Оборудование специально взял не самое новое, на современном оборудовании результаты заметно лучше.

Для тестирования разнесенных серверов 1С и SQL, сервер SQL: IBM System 3650 x4, 2*Xeon E5-2630, 32 Gb, Intel 350, Win 2008 r2.

Для проверки 10 Gbit сети использовались Intel 520-DA2 адаптеры.

Файловая версия. (база лежит на сервере в расшаренной папке, клиенты подключаются по сети, протокол CIFS/SMB). Алгоритм по шагам:

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

Подразумевается, что даже для старых компьютеров 10 летней давности (Pentium на 775 socket) время от нажатия на ярлык 1С:Предприятие до появления окна базы должно пройти меньше минуты. (Celeron = медленная работа).

Если у Вас компьютер хуже, чем пентиум на 775 socket с 1 гб оперативной памяти, то я Вам сочувствую, и комфортной работы на 1С 8.2 в файловой версии Вам будет добиться тяжело. Задумайтесь или об апгрейде (давно пора), или о переходе на терминальный (или web, в случае тонких клиентов и управляемых форм) сервер.

Если компьютер не хуже, то можно пинать администратора. Как минимум — проверить работу сети, антивируса и драйвера защиты HASP.

Если тест Гилева на этом этапе показал 30 "попугаев" и выше, но рабочая база 1С все равно работает медленно - вопросы уже к программисту.

1. Для ориентира, сколько же может "выжать" клиентский компьютер, проверяем работу только этого компьютера, без сети. Тестовую базу ставим на локальный компьютер (на очень быстрый диск). Если на клиентском компьютере нет нормального ССД, то создается рамдиск. Пока, самое простое и бесплатное — Ramdisk enterprise .

Для тестирования версии 8.2 вполне достаточно 256 мб рамдиска, и! Самое главное. После перезагрузки компьютера, с работающим рамдиском, на нем должно быть свободно 100-200 мб. Соответственно, без рамдиска, для нормальной работы свободной памяти должно быть 300-400 мб.

Для тестирования версии 8.3 рамдиска 256 мб хватит, но свободной оперативной памяти надо больше.

При тестировании нужно смотреть на загрузку процессора. В случае, близком к идеальному(рамдиск), локальная файловая 1с при работе загружает 1 ядро процессора. Соответственно, если при тестировании у вас ядро процессора загружено не полностью — ищите слабые места. Немного эмоционально, но в целом корректно, влияние процессора на работу 1С описано . Просто для ориентира, даже на современных Core i3 с высокой частотой вполне реальны цифры 70-80.

Наиболее часто встречающиеся ошибки на этом этапе.

  • Неправильно настроенный антивирус. Антивирусов много, настройки для каждого свои, скажу лишь то, что при грамотной настройке ни веб, ни касперский 1С не мешают. При настройках "по умолчанию" - может отниматься примерно 3-5 попугаев (10-15%).
  • Режим производительности. Почему-то на это мало кто обращает внимания, а эффект - самый весомый. Если нужна скорость - то делать это обязательно, и на клиентских и на серверных компьютерах. (Хорошее описание у Гилева . Единственный нюанс, на некоторых материнских платах если выключить Intel SpeedStep то нельзя включать TurboBoost).
Если коротко - во время работы 1С происходит очень много ожиданий ответа от других устройств (диск, сеть и пр). Во время ожидания ответа, если режим производительности включен сбалансированный, то процессор понижает свою частоту. Приходит ответ от устройства, надо работать 1С (процессору), но первые такты идут с пониженной частотой, потом частота повышается - а 1С снова ждет ответа от устройства. И так - много сотен раз в секунду.

Включать режим производительности можно (и желательно) в двух местах:

  • через BIOS. Отключить режимы C1, C1E, Intel С-state (C2, C3,C4). В разных биосах они называтся по разному, но смысл один. Искать долго, требуется перезагрузка, но если сделал один раз - потом можно забыть. Если в BIOS все сделать правильно, то скорости добавится. На некоторых материнских платах настройками BIOS можно сделать так, что режим производительности Windows роли играть не будет. (Примеры настройки BIOS у Гилева). Эти настройки в основном касаются серверных процессоров или "продвинутых" BIOS, если Вы такое у себя не нашли, и у вас НЕ Xeon - ничего страшного.

  • Панель управления - Электропитание - Высокая производительность. Минус - если ТО комптютера давно не проводилось, он будет сильнее гудеть вентилятором, будет больше греться и потреблять больше энергии. Это - плата за производительность.
Как проверить, что режим включен. Запускаем диспетчер задач - быстродействие - монитор ресурсов - ЦП. Дожидаемся, пока процессор ничем не занят.
Это - настройки по умолчанию.

В BIOS C-state включены,

режим энергопотребления сбалансированный


В BIOS C-state включены, режим высокой производительности

Для Pentium и Core на этом можно остановиться,

из Xeon еще можно выжать немного "попугайчиков"


В BIOS C-state выключены, режим высокой производительности.

Если не использовать Turbo boost - именно так должен выглядеть

сервер, настроенный на производительность


А теперь цифры. Напомню: Intel Xeon 5650, ramdisk. В первом случае тест показывает 23.26, в последнем - 49.5. Разница - почти двухкратная. Цифры могут варьироваться, но соотношение остается практически таким же для Intel Core.

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

в) Turbo Boost. Сначала надо понять, поддерживает ли Ваш процессор эту функцию, например . Если поддерживает, то можно еще вполне легально получить немного производительности. (вопросы разгона по частоте, особенно серверов, касаться не хочу, делайте это на свой страх и риск. Но соглашусь с тем, что повышение Bus speed со 133 до 166 дает очень ощутимый прирост как скорости, так и тепловыделения)

Как включать turbo boost написано, например, . Но! Для 1С есть некоторые нюансы (не самые очевидные). Сложность в том, что максимальный эффект от turbo boost проявляется тогда, когда включены C-state. И получается примерно такая картинка:

Обратите внимание, что множитель - максимальный, частота Core speed - красивейшая, производительность - высокая. Но что же будет в результате с 1с?

А в итоге получается, что по тестам производительности ЦПУ вариант с множителем 23 впереди, по тестам Гилева в файловой версии - производительность с множителем 22 и 23 одинаковая, а вот в клиент-серверной - вариант с множителем 23 ужас ужас ужас (даже, если C-state выставить на уровень 7, то все равно медленнее, чем с выключенным C-state). Поэтому рекомендация, проверьте оба варианта у себя, и выберите из них лучший. В любом случае, разница 49,5 и 53 попугая - достаточно значительная, тем более это без особых усилий.

Вывод - turbo boost включать обязательно. Напомню, что недостаточно включить пункт Turbo boost в биосе, надо еще посмотреть и другие настройки (BIOS: QPI L0s, L1 - disable, demand scrubbing - disable, Intel SpeedStep - enable, Turbo boost - enable. Панель управления - Электропитание - Высокая производительность). И я бы все-таки (даже для файловой версии) остановился на варианте, где c-state выключен, хоть там множитель и меньше. Получится как-то так...

Достаточно спорным моментом является частота памяти. Например вот частота памяти показывается как очень сильно влияющая. Мои же тесты - такой зависимости не выявили. Я не буду сравнивать DDR 2/3/4, я покажу результаты изменения частоты в пределах одной линейки. Память одна и та же, но в биосе принудительно ставим меньшие частоты.




И результаты тестирования. 1С 8.2.19.83, для файлового варианта локальный рамдиск, для клиент-серверного 1С и SQL на одном компьютере, Shared memory. Turbo boost в обоих вариантах выключен. 8.3 показывает сопоставимые результаты.

Разница - в пределах погрешности измерений. Я специально вытащил скрины CPU-Z чтобы показать, что со сменой частоты меняются и другие параметры, те же CAS Latency и RAS to CAS Delay, что нивелирует изменение частоты. Разница будет тогда, когда физически будут меняться модули памяти, с более медленных на более быстрые, но и там цифры не особо значительные.

2. Когда с процессором и памятью клиентского компьютера разобрались, переходим к следующему очень важному месту - сети. Про тюнинг сети написаны многие тома книг, есть статьи на Инфостарте ( , и другие), здесь я на эту тему заострять внимание не буду. Перед началом тестирования 1С просьба убедиться, что iperf между двумя компьютерами показывает всю полосу (для 1 гбит карточек - ну хотя бы 850 мбит, а лучше 950-980), что выполнены советы Гилева . Потом - самой простой проверкой работы будет, как это ни странно, копирование одного большого файла (5-10 гигабайт) по сети. Косвенным признаком нормальной работы на сети в 1 гбит будет средняя скорость копирования 100 мб/сек, хорошей работы — 120 мб/сек. Хочу обратить внимание, что слабым местом (в том числе) может быть и загруженность процессора. SMB протокол на Linux достаточно плохо параллелится, и во время работы он вполне спокойно может «скушать» одно ядро процессора, и больше не потреблять.

И еще. С настройками по умолчанию windows клиент лучше всего работает с windows server (или даже windows рабочая станция) и протоколом SMB/CIFS, linux клиент (debian, ubuntu остальные не смотрел) лучше работает с linux и NFS (с SMB тоже работает, но на NFS попугаи выше). То, что при линейном копировании вин-линукс сервер на нфс копируется в один поток быстрее, еще ни о чем не говорит. Тюнинг debian для 1С - тема отдельной статьи, я к ней еще не готов, хотя могу сказать, что в файловой версии получал даже немного бОльшую производительность, чем Win вариант на этом же оборудовании, но с postgres при пользователях свыше 50 у меня пока еще все очень плохо.

Самое главное, о чем знают "обжегшиеся" администраторы, но не учитывают начинающие. Есть очень много способов задать путь к базе 1с. Можно сделать servershare, можно 192.168.0.1share, можно net use z: 192.168.0.1share (и в некоторых случаях такой способ тоже сработает, но далеко не всегда) и потом указывать диск Z. Вроде бы все эти пути указывают на одно и то же место, но для 1С есть только один способ, достаточно стабильно дающий нормальную производительность. Так вот, правильно делать надо так:

В командной строке (или в политиках, или как Вам удобно) - делаете net use DriveLetter: servershare. Пример: net use m: serverbases. Я специально подчеркиваю, НЕ IP адрес, а именно имя сервера. Если сервер по имени не виден - добавьте его в dns на сервере, или локально в файл hosts. Но обращение должно быть по имени. Соответственно - в пути к базе обращаться к этому диску (см картинку).

А теперь я на цифрах покажу, почему именно такой совет. Исходные данные: Карты Intel X520-DA2, Intel 362, Intel 350, Realtek 8169. ОС Win 2008 R2, Win 7, Debian 8. Драйвера последние, обновления применены. Перед тестированием я убедился, что Iperf дает полную полосу (кроме 10 гбит карточек, там получилось только 7.2 Gbit выжать, позже посмотрю почему, тестовый сервер еще не настроен как надо). Диски разные, но везде SSD(специально вставил одиночный диск для тестирования, больше ничем не нагружен) или рейд из SSD. Скорость 100 Mbit получена путем ограничения в настройках адаптера Intel 362. Разницы между 1 Gbit медь Intel 350 и 1 Gbit оптика Intel X520-DA2 (полученной путем ограничения скорости адаптера) не обнаружено. Максимальная производительность, турбобуст выключен (просто для сопоставимости результатов, турбобуст для хороших результатов добавляет чуть меньше 10%, для плохих - вообще может никак не сказаться). Версии 1С 8.2.19.86, 8.3.6.2076. Цифры привожу не все, а только самые интересные, чтобы было с чем сравнивать.

100 Mbit CIFS

Win 2008 - Win 2008

обращение по ip адресу

100 Mbit CIFS

Win 2008 - Win 2008

обращение по имени

1 Gbit CIFS

Win 2008 - Win 2008

обращение по ip адресу

1 Gbit CIFS

Win 2008 - Win 2008

обращение по имени

1 Gbit CIFS

Win 2008 - Win 7

обращение по имени

1 Gbit CIFS

Win 2008 - Debian

обращение по имени

10 Gbit CIFS

Win 2008 - Win 2008

обращение по ip адресу

10 Gbit CIFS

Win 2008 - Win 2008

обращение по имени

11,20 26,18 15,20 43,86 40,65 37,04 16,23 44,64
1С 8.2 11,29 26,18 15,29 43,10 40,65 36,76 15,11 44,10
8.2.19.83 12,15 25,77 15,15 43,10 14,97 42,74
6,13 34,25 14,98 43,10 39,37 37,59 15,53 42,74
1С 8.3 6,61 33,33 15,58 43,86 40,00 37,88 16,23 42,74
8.3.6.2076 33,78 15,53 43,48 39,37 37,59 42,74

Выводы (из таблицы, и из личного опыта. Касается только файловой версии):

  • По сети можно получить вполне нормальные цифры для работы, если эту сеть нормально настроить, и правильно прописать путь в 1С. Даже первые Core i3 вполне могут давать 40+ попугаев, что достаточно неплохо, причем это не только попугаи, в реальной работе разница тоже заметна. Но! ограничением при работе нескольких (больше 10) пользователей уже будет выступать не сеть, тут 1 Гбит еще хватит, а блокировки при многопользовательской работе (Гилев).
  • платформа 1C 8.3 в разы требовательнее к грамотной настройке сети. Базовые настройки - см Гилев , но учтите, что влиять может все. Видел ускорение от того, что деинсталлировали (а не просто отключали) антивирус, от убирания протоколов типа FCoE, от смены драйверов на более старую, но microsoft certified версию (особенно касается дешевых карточек типа асусов и длинков), от убирания второй сетевой карточки из сервера. Очень много вариантов, настраивайте сеть вдумчиво. Вполне может быть ситуация, когда платформа 8.2 дает приемленые цифры, а 8.3 - в два или даже больше раз меньше. Попробуйте поиграться с версиями платформы 8.3, иногда получается очень большой эффект.
  • 1С 8.3.6.2076 (может и более поздние, точную версию еще не искал) по сети все-таки настроить попроще, чем 8.3.7.2008. Добиться от 8.3.7.2008 нормальной работы по сети (в сопоставимых попугаях) получилось всего несколько раз, повторить для более общего случая не смог. Сильно не разбирался, но судя по портянкам от Process Explorer там запись не так идет, как в 8.3.6.
  • Несмотря на то, что при работе на 100Мбит сети график ее загруженности небольшой, (можно сказать что сеть свободная), скорость работы все равно гораздо меньше, чем на 1 гбит. Причина - задержки (latency) сети.
  • При прочих равных условиях (хорошо работающей сети) для 1С 8.2 соединение Intel - Realtek медленнее на 10%, чем Intel-Intel. А вот realtek-realtek вообще могут дать резкие проседания на ровном месте. Поэтому, если есть деньги - лучше везде держать сетевые карточки Intel, если денег нет - то Intel ставить только на сервер (ваш К.О.). Да и инструкций по тюнингу интелевых сетевых карточек в разы больше.
  • Настройки антивирусов по умолчанию (на примере drweb 10 версии) отнимают около 8-10% попугаев. Если настроить как надо (разрешить процессу 1cv8 делать все, хоть это и не безопасно) - скорость такая же, как и без антивируса.
  • Линуксовым гуру НЕ читать. Сервер с samba это здорово и бесплатно, но если на сервер поставить Win XP или Win7 (а еще лучше - серверные ОС), то в файловой версии 1с будет работать быстрее. Да, и samba и стек протоколов и настройки сети и многое многое другое в debian/ubuntu хорошо тюнингуется, но делать это рекомендуется специалистам. Нет смысла ставить линукс с настройками по умолчанию и потом говорить, что он медленно работает.
  • Достаточно неплохо проверять работу дисков, подключенных через net use, с помощью fio . По крайней мере будет понятно, или это проблемы с платформой 1С, или с сетью/диском.
  • Для однопользовательского варианта не могу придумать тесты (или ситуацию) ,где была бы видна разница между 1Гбит и 10 Гбит. Единственное, где 10Гбит для файловой версии дал результат лучше - это подключение дисков по iSCSI, но это тема отдельной статьи. Все-таки считаю, что для файловой версии 1 Гбит карточек достаточно.
  • Почему при 100 Мбит сети 8.3 работает заметно быстрее 8.2 - не понимаю, но факт имел место быть. Все остальное оборудование, все остальные настройки абсолютно одинаковые, просто в одном случае тестируется 8.2, а в другом - 8.3.
  • Не тюнингованный NFS win - win или win-lin дает 6 попугаев, в таблицу включать не стал. После тюнинга 25 получил, но нестабильно (разбег в измерениях больше 2 единиц). Пока не могу дать рекомендации по использованию windows и NFS протокола.
После всех настроек и проверок запускаем опять тест с клиентского компьютера, радуемся улучшившемуся результату (если получилось). Если результат улучшился, попугаев стало больше 30(а особенно больше 40), пользователей одновременно работает меньше 10 а рабочая база все равно тормозит - практически однозначно проблемы программиста (или Вы уже достигли пика возможностей файловой версии).

Терминальный сервер. (база лежит на сервере, клиенты подключаются по сети, протокол RDP). Алгоритм по шагам:

  • Добавляем на сервер тестовую базу Гилева в ту же папку, что и основные базы. С этого же сервера подключаемся, запускаем тест. Запоминаем получившийся результат.
  • Точно так же, как и в файловой версии, настраиваем работу процессора. В случае терминального сервера - процессор вообще несет на себе основную роль (подразумевается, что нет явных слабых мест, типа нехватки памяти или огромного количества ненужного ПО).
  • Настройка сетевых карточек в случае терминального сервера практически не влияет на работу 1с. Для обеспечения "особого" комфорта, если у вас сервер выдает больше 50 попугаев можно поиграться с новыми версиями RDP протокола, просто для комфорта работы пользователей, более быстрого отклика и скроллинга.
  • При активной работе большого количества пользователей (а здесь уже можно пробовать и 30 человек на одну базу подключить, если постараться) очень желательно поставить SSD диск. Почему-то считается, что диск не особо влияет на работу 1С, но все тесты проводят с включенным на запись кэшем контроллера, что неправильно. Тестовая база маленькая, она вполне помещается в кэш, отсюда и высокие цифры. На реальных (больших) базах все будет совершенно по другому, поэтому для тестов кэш отключен.
Для примера, проверил работу теста Гилева с разными вариантами дисков. Диски ставил из того, что было под рукой, просто тенденцию показать. Разница между 8.3.6.2076 и 8.3.7.2008 небольшая(в варианте Ramdisk Turbo boost 8.3.6 выдает 56.18 а 8.3.7.2008 выдает 55.56, в остальных тестах разница еще меньше). Энергопотребление - максимальная производительность, turbo boost отключен (если не сказано иное).
Raid 10 4x SATA 7200

ATA ST31500341AS

Raid 10 4x SAS 10k Raid 10 4x SAS 15k Одиночный SSD Ramdisk Ramdisk Включен кэш

RAID контроллера

21,74 28,09 32,47 49,02 50,51 53,76 49,02
1С 8.2 21,65 28,57 32,05 48,54 49,02 53,19
8.2.19.83 21,65 28,41 31,45 48,54 49,50 53,19
33,33 42,74 45,05 51,55 52,08 55,56 51,55
1С 8.3 33,46 42,02 45,05 51,02 52,08 54,95
8.3.7.2008 35,46 43,01 44,64 51,55 52,08 56,18
  • Включенный кэш RAID контроллера нивелирует всю разницу между дисками, цифры одинаковые и для сата, и для сас. Тестирование с ним для небольшого объема данных бесполезно и не является каким-то показателем.
  • Для платформы 8.2 разница в производительности между SATA и SSD вариантами - более чем в два раза. Это не опечатка. Если во время теста на САТА дисках смотреть на монитор производительности. то там явно видно "Активное время работы диска (в%)" 80-95. Да, если включить кэш самих дисков на запись скорость вырастет до 35, если включить кэш рейд контроллера - до 49 (независимо от того, какие диски тестируются в данный момент). Но это - синтетические попугаи кэша, в реальной работе при больших базах никогда не будет 100% write cache hit ratio.
  • Скорости даже дешевых ССД (я тестировал на Agility 3) вполне хватает для работы файловой версии. Ресурс записи - другое дело, тут смотреть надо в каждом конкретном случае, понятно, что у Intel 3700 он будет на порядок выше, но там и цена соответствующая. И да, я понимаю, что при тестировании SSD диска я тоже тестирую в бОльшей степени кэш этого диска, реальные результаты будут меньше.
  • Самым правильным (с моей точки зрения) решением будет выделить 2 ССД диска в зеркальный рейд для файловой базы (или нескольких файловых баз), и ничего больше туда не помещать. Да, при зеркале ССД изнашиваются одинаково, и это минус, но хотя бы от ошибок электроники контроллера хоть как-то застрахованы.
  • Основные плюсы ССД дисков для файлового варианта появятся тогда, когда будет много баз, и в каждой по несколько пользователей. Если баз 1-2, и пользователей в районе 10, то и SAS дисков хватит. (но в любом случае - смотреть на загрузку этих дисков, хотя бы через perfmon).
  • Основные плюсы терминального сервера - у него могут быть очень слабые клиенты, и настройки сети на терминальный сервер влияют гораздо меньше (опять ваш К.О.).
Выводы: если на терминальном сервере запустить тест Гилева (с того же диска, где лежат рабочие базы) и в те моменты, когда тормозит рабочая база, и тест Гилева покажет хороший результат (выше 30) - то в медленной работе основной рабочей базы виноват, скорее всего, программист.

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

Клиент-серверный вариант.

Тесты проводил только на 8.2, т.к. на 8.3 все достаточно серьезно зависит от версии.

Для тестирования выбирал разные варианты серверов и сети между ними, чтобы показать основные тенденции.

1С: Xeon 5520

SQL: Xeon E5-2630

1С: Xeon 5520

SQL: Xeon E5-2630

Fibre channel - SSD

1С: Xeon 5520

SQL: Xeon E5-2630

Fibre channel - SAS

1С: Xeon 5650

SQL: Xeon E5-2630

1С: Xeon 5650

SQL: Xeon E5-2630

Fibre channel - SSD

1С: Xeon 5650

SQL: Xeon E5-2630

1С: Xeon 5650 = 1С: Xeon 5650 = 1С: Xeon 5650 = 1С: Xeon 5650 = 1С: Xeon 5650 =
16,78 18,23 16,84 28,57 27,78 32,05 34,72 36,50 23,26 40,65 39.37
1С 8.2 17,12 17,06 14,53 29,41 28,41 31,45 34,97 36,23 23,81 40,32 39.06
16,72 16,89 13,44 29,76 28,57 32,05 34,97 36,23 23,26 40,32 39.06

Вроде все интересные варианты рассмотрел,если что-то интересует еще - пишите в комментария, постараюсь сделать.

  • САС на СХД работает медленнее, чем локальные ССД, даже несмотря на то, что у СХД большие размеры кэша. ССД и локальные и на СХД для теста Гилева работают с сопоставимой скоростью. Какой-то стандартный многопоточный тест (не только записи, а всего оборудования) кроме нагрузочного 1С из ЦУП я не знаю.
  • Смена сервера 1С с 5520 на 5650 дала практически удвоение производительности. Да, конфигурации серверов не совпадают полностью, но тенденцию показывает (ничего удивительного).
  • Увеличение частоты на сервере SQL конечно дает эффект, но не такой, как на сервере 1С, MS SQL сервер отлично умеет (если его об этом попросить) использовать многоядерность и свободную память.
  • Смена сети между 1С и SQL с 1 гбит на 10 гбит дает примерно 10% попугаев. Ожидал большего.
  • Включение Shared memory эффект все-таки дает, хоть и не 15%, как в статье описано. Делать обязательно, благо это быстро и просто. Если кто-то при установке дал серверу SQL именованный инстанс, то для работы 1С имя сервера надо указывать не FQDN (будет работать tcp/ip), не через localhost или просто ServerName, а через ServerNameInstanceName, например zz-testzztest. (Иначе будет ошибка СУБД: Microsoft SQL Server Native Client 10.0: Поставщик общей памяти: Не найдена библиотека общей памяти, использующаяся для установки соединения с SQL Server 2000 . HRESULT=80004005, HRESULT=80004005, HRESULT=80004005, SQLSrvr: SQLSTATE=08001, state=1, Severity=10, native=126, line=0).
  • для пользователей меньше 100 единственный смысл для разнесения на два отдельные сервера - это лицензия на Win 2008 Std (и более старые версии), которая поддерживает только 32 Гб ОЗУ. Во всех других случаях - 1С и SQL однозначно надо ставить на один сервер и давать ему побольше (хотя бы 64 Гб) памяти. Давать MS SQL меньше 24-28 Гб ОЗУ - неоправданная жадность (если Вы думате, что у Вас этой памяти ему хватает и все нормально работает - может Вам и файловой версии 1С бы хватило?)
  • Насколько хуже работает связка 1С и SQL в виртуальной машине - тема отдельной статьи (подсказка - заметно хуже). Даже в Hyper-V все не так однозначно...
  • Сбалансированный режим производительности - это плохо. Результаты вполне кореллируют с файловой версией.
  • В многих источниках написано, что отладочный режим (ragent.exe -debug) дает сильное понижение производительности. Ну понижает, да, но 2-3% я бы не назвал значительным эффектом.
Тут будет меньше всего советов для конкретного случая, т.к. тормоза при клиент-серверном варианте работы самый сложный случай, и все настраивается очень индивидуально. Проще всего сказать, что для нормальной работы нужно взять отдельный сервер ТОЛЬКО для 1C и MS SQL, поставить туда процессоры с максимальной частотой (выше 3 Ггц), SSD диски для базы, и побольше памяти (128+), виртуализацию не использовать. Помогло - отлично, Вам повезло (и таких везунчиков будет очень много, больше половины проблем решаются адекватным апгрейдом). Если нет, то любые другие варианты уже требуют отдельного разбирательства и настроек.

Компьютеры(условное название) участвовавшие в тестах - описание (диски указаны только для БД):

(уточнение между серверами сеть 1 Гбит )

1) IT33 - десктоп на Core i5 4 ядра по 2.8 Ггц, DDR3 3 ГБ , один жесткий диск 7200 об/с .

2) REAL - САМЫЙ МОЩНЫЙ как мне думалось)) 8 ядер Xeon по 3 Ггц , DDR2 48 Гб , RAID10 на SSD

3) REAL2 - 8 ядер Xeon по 2 Ггц, DDR2 22 ГБ , RAID10 на жестких дисках SAS 10 000 об/с

Были проведены тесты в конфигурации 1с от Гилева:

"Сервер SQL"--->"Сервер 1с"--->"Оценка" + "Имя клиентского компьютера(если не указан то Он Же - певый в списке)"

>1)REAL2--->REAL2--->25.64(TCP--SQL)
>2)REAL2--->REAL2--->26.32(SQL--Shared Memory)

>3)REAL2--->REAL2--->25.64(SQL--Shared Memory) + IT33(клиент) - от клиента до Серверов сеть=10 Мбит

>4 )REAL2--->REAL2--->24.27(SQL--Shared Memory) + REAL(клиент) - хм.. странно сеть 1 Гбит... почему же меньше попугаев..
>5)REAL2--->REAL2--->37.59(Файловый)

** **** **************************
>1)REAL--->REAL--->8.73(TCP--SQL)

>2)REAL--->Real2 --->11.99(TCP--SQL) --- это уже начало меня наводить на некоторые мысли))

>3)REAL--->REAL--->17.48(Файловый)

** **** ******************************

>1)IT33--->IT33--->26.88(TCP--SQL)
>2)IT33--->IT33--->34.72(SQL--Shared Memory)
>3)IT33--->IT33--->59.52(Файловый)

Итоги:

Смотрел результаты теста... крутил и так и сяк)) и вот осенило (сделал замеры скорости работы Оперативной памяти),

что на скорость работы 1с 8.х (замечу что Результаты Теста основаны на ОДНОПОЛЬЗОВАТЕЛЬСКОМ режиме, но и для клиент-серверного варианта при многопользовательской работе - думаю также будут иметь немалую долю влияния) -

итак на скорость 1С влияет: частота шины CPU + частота RAM памяти

----> что влияет на скорости ЗАПИСИ и ЧТЕНИЯ в RAM. Что и есть основа быстродействия 1с 8.х .

Компьютеры разделившие призовые места По скорости работы 1с))

1)IT33 --->IT33--->59.52(Файловый)

RAM DDR 3 (Чтение 11089 Мб/с, Запись 7047 Мб/с)------ как я и предпологал разница будет значительной с серверами

2)REAL2 --->REAL2--->37.59(Файловый)
- RAM DDR2 (Чтение=3474, Запись=2068)

3)REAL --->REAL--->17.48(Файловый)
- RAM DDR2 (Чтение=1737 Мб/с, Запись=1042 Мб/с) - как выяснилось скорость ниже чем на Real2 - ровно в 2 раза,

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

ВЫВОДЫ:

Наибольшая скорость работы 1с 8.х достигается:

I) для Файлового варианта (мне лично неинтересен)

А)запуск Клиента(любого) на компьютере с большой скоростью работы с Оперативной памятью. (например Терминальный сервер

БД тамже).

II) для Клиент-Серверного варианта

1) Толстые клиенты 1C на "Терминальном сервере" - с +

2) Тонкие клиенты 1C - уже нет особой разницы где... но желательно настроить через "HTTP://".
3а) "SQL сервер" +"Сервер 1с предприятия" (в режиме Shared Memory) - на одной тачке сНаибольшей скоростью Запись/Чтение оперативки + Наибольшая частота Ггц Ядер процессора дисках

Уточнения:

- поддержка Shared Memory - появилась на движке начиная с 8.2.17 (ВНИМАНИЕ в конфигурации - не должен быть включен режим совместимости с предыдущими версиями движка), на предыдущих движках будет использоватся Naimed Pipes - тоже показывающий неплохие результаты))

- RAID на SSD дисках - целесообразно использование RAID10 - для отказоустойчивости, при этом беря в расчет ШРАФ на Запись:

пример RAID10 (4 шт Штраф записи=2) , Скорость Записи= 4/2 = 2 диска, Штрафа на чтение нет.

Еще можно дополнительно поднять надежность и стабильность скорости SSD - используя не весь объем диска.

пример(поднятие надежности Десктопного SSD до уровня Серверного SSD):

Если к примеру, SSD Intel 520 series 120GB, и разметить 81 GB, а остальное пространство оставить неразмеченным -

то под over provisioning будет выделено около 32% пространства SSD дополнительно к уже имеющимся скрытым 8%. Итого получаем около 40%

Отличие серверного SSD Intel 710 series от десктопного SSD Intel 320 series как раз и составляет разница в over provisioning: более 40% для Intel 710 и 8% Intel 320.

Если клиентов 1С много от 100 и далее:

1)На текущих технологиях сети Ethernet - НЕ ЦЕЛЕСООБРАЗНО ранесение "SQL""Сервер 1С" .

например из-за Латентности(задержек) в сети Gigabit Ethernet - реальная скорость обмена с SQL= 30 Мегабайт/с - что мало даже для интенсивной работы с Базой Данных 1-го пользователя.

2)Т.к. фактически "Сервер 1с"="Объектная СУБД" (многомерные объекты), а "SQL"="Реляционная СУБД" (плоское -табличное хранение данных)

=> в базе SQL -хранится ПЛОСКАЯ проекция Объектов 1С и Сервер 1С собирает из этой проекции Объект, далее проводит работы с этим Объектом и наконец по завершении работы Опять раскладывает в плоский вид сохраня в SQL.

То как следствие между "SQL""Сервер 1С" - и приходится отказыватся от разнесение на два физических сервера. Но можно использовать по полной реализацию NUMA-узлов. (Это должна поддерживать OS и сами процессоры ).


3б) Разносим сервера SQL и Сервера 1с отдельно : На текущих технологиях Ethernet - например Gigabit - НЕ ЦЕЛЕСООБРАЗНО
-SQL на сервер с Наибольшей скоростью Запись/Чтение оперативки + Наибольшая частота Ггц Ядер процессора
-Несколько ФИЗИЧЕСКИХ серверов в Кластере 1с c Наибольшей скоростью Запись/Чтение оперативки + Наибольшая частота Ггц Ядер процессора + желательно ипользование RAID на SSD- дисках

Стандартный нагрузочный тест предназначен для оценки производительности серверного оборудования и программного обеспечения в так называемых «Стандартных пользователях 1С». Основная область применения данного теста – выбор конфигурации серверного оборудования и программного обеспечения для целей конкретного внедрения.

Решаемые задачи

  • Расчет производительности данной конфигурации серверного оборудования и программного обеспечения
  • Сравнение производительности различных конфигураций серверного оборудования и программного обеспечения
  • Выбор оборудования, необходимого для работы данной информационной системы
  • Расчет параметров оборудования, необходимого для работы данной информационной системы

Что оценивает тест

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

  • все рабочие серверы, использованные для развертывания кластера «1С:Предприятия» и серверы СУБД
  • операционные системы всех рабочих серверов;
  • настройки операционных систем, «1С:Предприятия» и СУБД.

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

Таким образом, тест оценивает производительность серверной части системы по самому узкому месту, то есть ее наименее производительному компоненту.

Если серверная часть системы недостаточно хорошо сбалансирована для работы с «1С:Предприятием», то при устранении узкого места (замене или апгрейде наименее производительного компонента) можно будет получить более высокую оценку производительности.

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

Как работает тест

Стандартный нагрузочный тест представляет собой информационную базу «1С:Предприятия 8.2» с конфигурацией, основанной на «Управлении производственным предприятием». Конфигурация объединена с «Тест-центром 2.0», в состав которого включен один сценарий тестирования.

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