Для примера сравним трафик пакетов по сети, который возникает в момент копирования большого файла (1 Тб) и трафик, возникающий в учетной системе (например, между сервером приложений 1С 8 и MS SQL) с большим количеством запросов (несколько тысяч в секунду – реальный показатель для высоконагруженных систем). С копированием большого файла все более менее ясно, файл разбивается на равные пакеты и передается максимально быстро (в соответствие с пропускной способностью сети), а трафик учетной системы неоднороден (запросы разного размера – сравнительно небольшого до нескольких кб) и чтобы «загрузить сеть» запросами, например 10кб, потребуется сгенерировать очень большое количество запросов (возможно даже нереальное для вашей информационной системы) в единицу времени. Получается, что ориентироваться только на «пропускную способность сети» и «загрузку сети» в учетных системах нельзя, и важно понимать такой параметр, как «отклик сети», количество пакетов (а это, в конечном счете, запросы к серверу SQL), которые можно передать с одного сервера на другой в единицу времени.
Два примера из «жизни»:
— Пример 1: сервер БД и сервер приложения 1С 8 находятся на одном аппаратном ресурсе, то информационная система работает достаточно быстро. Когда их разносят на разные аппаратные ресурсы, пользовательские операции замедляются.
— Пример 2: сервер БД и сервер приложений 1С 8 находятся на различных аппаратных ресурсах. Когда в системе работают несколько пользователей, то длительность операций приемлемая. Если большое количество пользователей формируют отчеты, то скорость резко падает (при этом сервер приложения 1С и сервер БД не нагружен).
Исходя из всего вышесказанного, решили провести небольшое исследование сетевых интерфейсов на предмет их производительности при использовании в различных информационных системах (оборудование предоставил наш партнер USN Computers).
Параметры серверов для исследования
Сервер БД |
Windows Server 2008 R2 Enterprise (высокая производительность) |
SQL Server 2008 R2 |
Intel Core i7 |
8 Gb ОЗУ |
Сервер клиент |
Windows Server R2 Enterprise (высокая производительность) |
AMD eight — core FX – 8350 |
16 Gb ОЗУ |
Исследуемые сетевые интерфейсы
Интерфейс1: Marvell Yukon 88E8056 PCI-E Gigabit Ethernet |
SWITCH 1Gb to 1Gb |
||
Интерфейс2: Intel(R) Ethernet Controller 10 Gigabit X540-AT2 |
Point2Point |
||
Интерфейс3: Dolphin 5 Gigabit IXH610 (Аналог Infiniband) |
Point2Point |
||
Программное обеспечение для исследования
ПО написано на С++, создает, используя OleDB, нужное количество соединений к серверу БД от сервер клиента. В каждом соединении непрерывно формируется запрос вида: SELECT ‘Случайные данные’, размером от 1 – 1024 байт (имитируется случайный трафик учетной системы, например, 1С 8.2/8.3.) и отправляется серверу БД с получением выборки. Таким образом, без значительной нагрузки на сервер БД организуется интенсивный трафик запросов и осуществляются замеры.
Проведение исследования
В ходе исследования установлен мониторинг производительности PerfExpert на два сервера для отслеживания наличия аппаратных ресурсов (чтобы узким местом был именно сетевой интерфейс). Замеры осуществлялись для следующего количества одновременно активных сессий (соединений с БД): 1,3,10,14.
Интерфейс |
Количество сессий |
Среднее количество запросов/с (на сессию) |
Суммарное количество запросов в секунду для всех сессий |
Количество байт передано + получено |
«Загрузка сети», % |
Интерфейс1 (1Gb/s) |
1 |
2223 |
2223 |
2,75 Мб/с |
2,2% |
Интерфейс1 (1Gb/s) |
3 |
1887 |
5661 |
7 Мб/с |
5,6% |
Интерфейс1 (1Gb/s) |
10 |
1537 |
15370 |
19,25 Мб/с |
15,4% |
Интерфейс1 (1Gb/s) |
14 |
1381 |
19334 |
24,25 Мб/с |
19,4% |
Интерфейс2 (10Gb/s) |
1 |
3918 |
3918 |
5 Мб/с |
0,4% |
Интерфейс2 (10Gb/s) |
3 |
3903 |
11709 |
14,63 Мб/с |
1,17% |
Интерфейс2 (10Gb/s) |
10 |
3002 |
30020 |
37,5 Мб/с |
3% |
Интерфейс2 (10Gb/s) |
14 |
2985 |
41790 |
52,25 Мб/с |
4,18% |
Интерфейс3 (5 Gb/s) |
1 |
4552 |
4552 |
5,75 Мб/с |
|
Интерфейс3 (5 Gb/s) |
3 |
4447 |
13341 |
16,8 Мб/с |
|
Интерфейс3 (5 Gb/s) |
10 |
3526 |
35260 |
44 Мб/с |
|
Интерфейс3 (5 Gb/s) |
14 |
2834 |
39676 |
49,6 Мб/с |
|
Таблица 1. Результаты исследования.
Обратите внимание (выделено желтым в таблице), как деградирует скорость передачи запросов для 1 сессии и 14 сессий (при этом загрузка сети приемлемая в обоих случаях)!!! Если вернуться ко второму примеру (см. выше), то 14 сессий – это могут быть сессии 1С пользователей, формирующие отчеты с большим количеством запросов (особенно маленьких по ресурсопотреблению). А если, например, для формирования отчета необходимо выполнить 100000 запросов к серверу БД, то увеличение длительности может составить до 2 раз только за счет сетевой передачи.
Вывод
В учетных системах наравне с пропускной способностью огромное значение имеет параметр, определяющий отклик сети, на который часто не обращают внимание. Судя по результатам исследования, стоимости оборудования и адаптации для высоконагруженных информационных систем, в том числе 1С 7.7./8.1., 8.2., 8.3, использование Интерфейса 2 (Intel(R) Ethernet Controller 10 Gigabit X540-AT2) между серверами приложения 1С и сервером БД (MS SQL) является оптимальным решением, так как отклик сети для нее почти в 2 раза лучше, чем для сети 1Гб/с.
P.S> Для проверки скорости собственных сетевых интерфейсов, например, между сервером приложения 1С и сервером БД MS SQL предлагается скачать бесплатное приложение. Благодаря тестирования вы получите максимальное количество запросов в секунду для каждой сессии, деградацию при параллельной работе нескольких пользователей для вашей сетевой архитектуры.
Чтобы доказать, что важна не только пропускная способность сети, Вы сравнили три контроллера (с пропускными способностями 1Гбит, 5 Гбит и 10 Гбит) и пришли к выводу что, внезапно, оптимальным является контроллер с самой высокой пропускной способностью(10Гбит), так? Но при этом приписываете эту «победу» некоемому абстрактному «времени отклика» (которое у вас, похоже от пропускной способности не зависит?). Или я что-то упустил?
Отличная статья, будет хоть что показать админу. А то еле-еле допросиля чтоб хоть 1Gb поврубал…
Время отклика не пробовали смотреть smokeping’ом например?
Здравствуйте, с праздниками! 🙂 Ваш совет устанавливать насколько возможно более производительное серверное оборудование без споров принимаем, но думаем что при 300 пользователях узким местом в этой связке является не сетевой интерфейс, а количество и качество оперативной памяти SQL-сервера (процессор нагружен) и почему-то рейд-массив сервера 1С8 (процессор сервера 1С8 не нагружен, но смотрим на растущий объем памяти и дампы под процессы rphost). Ничем другим кроме процессов сервера 1С8 и процессов клиентов 1С8 жесткие диски сервера 1С8 не заняты, однако часто выходят из строя. Подскажите пожалуйста, как это обосновать, вероятно жесткие диски «летят» потому, что сервер 1С8 ввиду низкой загрузки процессора со стороны ПО сервера и клиентов 1С гоняет слишком много темпов?
Насколько я понял, Вы намекаете, что сетевое оборудование разных производителей и разных моделей, на физическом уровне с разной скоростью реагирует на команду системы по формированию пакета для передачи в сеть?
А вывод? Быть может производители указывают в характеристике продукции параметр на который следует обратить внимание при покупке, кроме скорости поддерживаемой сети?
Вот, думаю, можно еще по теме посмотреть:http://infostart.ru/public/147259/
Если экономить своё время, то читать с раздела: «ВЫВОДЫ».
Там и картинка есть про латентность… 😉
(6) hogik, если по нужде ставят все на 1 самый навороченный комп (ссылку смотрел), тогда сложные месячные отчеты не могут сформироваться, недостаточно памяти. То есть отдельный сервер 1С все же нужен.
(7)
«… недостаточно памяти. То есть отдельный сервер 1С все же нужен»(с)
Сергей (ksnik).
Архитектура NUMA и есть 2, 4, 8 «отдельных» серверов в одной «коробке».
С самым быстрым интерфейсом между этими «серверами» — оперативная память.
С возможностью поставить суммарный большой объем оперативной памяти (с учетом лимита объема памяти на один узел).
С возможностью отдать/управлять всем объемом памяти «коробки» 😉 на конкретную задачу, который (объем) Вы никогда не сможете обеспечить на обычной архитектуре.
(8) hogik, почитал про когерентность кэш-памяти бо оперативка просто-напросто надолго забивается при обработки наборов данных запросов, но кажется что не очень подходит для борьбы с нехваткой памяти, кажется нужно делать как можно мощней проц и больше памяти MSSQL, на сервере 1С работать над утечкой памяти и неизвестно чем еще, неизвестно как выбирать железо в связке»оперативка-рейд» чтоб не ломалось.
Добрый день, коллеги.
С прошедшими всех праздниками
Теперь по комментариям:
(1) Не так важно оборудование для исследования, целью статьи было следующее:
«Развеять миф о том, что если у вас не загружена сеть, то проблем с сетью нет», для этого сделано много замеров (большинство не вошло в конечную статью). Неожиданностью и для нас оказалось, что отклик в сетевом интерфейсе 10Гб в 2 раза лучше, чем для 1 Гб/с, но пока эти исследования не проведешь — не докажешь этот факт.
Почему » «победу» некоемому абстрактному «времени отклика» » — это не абстрактная характеристика, просто большинство сетевых плат для Ethernet продаются без нее, а она очень важна как раз для трафика информационной системы.
(3) Нет, замеряли своими методами через отправку/получения маленького пакета.
(4) «Ваш совет устанавливать насколько возможно более производительное серверное оборудование без споров принимаем» — нет, это не совсем вывод статьи. Вывод: учитывать отклик очень важно при выборе оборудования. + Приведена интересная таблица для оценки разницы. Приведу пример: стоит выбор между 100Мб/с и 1 Гб/с. Администратор утверждает, что сеть 100 Мб/с загружена на 15%, следовательно, сетевой интерфейс справляется и обновления не требуется. При большом количестве пакетов (запросов в секунду) отклик повлияет на скорость системы в целом, значит надо провести доп. работы для исследования этого параметра и выводы администратора не правильны (вероятность ошибки большая).
По поводу общей производительности (память, ЦПУ, диск) — много можно сказать, тем более что мы этим активно занимаемся — softpoint.ru. Не совсем по теме статьи. Если будут вопросы, пишите в личку.
(6) Мы активно участвовали в обсуждении темы автора, есть с чем согласны — есть то, с чем не согласны.
Жду дальнейших вопросов
Интересная информация у QLogic: «Introduction to Ethernet Latency»
Latency
Range (μs)
Technology Applications
50 – 125 μs
1gb ethernet (TcP/iP) • Multi-tasking: multiple
high-bandwidth applications
running simultaneously
• Bulk data transfer
• Transactional database
backup and applications
• Web (front-end for
data centers)
5 – 50 μs 10gb ethernet
(TcP/iP)
• Bulk data transfer
• real-time video streaming
• Database backup and
applications
3 – 5 μs rDMA, rocee, and
iWArP
• high Performance computing
• high-frequency Trading (hfT)
• inter-process communication
(iPc) cluster
• low-latency applications
Sub-3 μs infiniBand (QDr) and
proprietary
• high Performance computing
• high frequency Trading (hfT)
• Ultra-low latency applications
А в спецификациях на картах Ethernet не пишут Latency (отклик).
(12) Статья носит чисто информационный характер и может кому-то помочь при решении вопросов выбора сетевого оборудования.
+ скоро доработаем бесплатное ПО для проверки сетевого интерфейса вашей системы 1С 8.Х (будет измеряться количество запросов в секунду и деградация между сервером приложений 1С и сервером БД).
(14) вот это уже ближе к «телу». Тогда и статистика от людей подсобирается…. что да как у кого..
(14) Хотелось бы посмотреть
Статья конечно интересная, но сервер — это не только сетевая карта и провода. На скорость работы оного поболе влияют ЖД и память (из личного опыта), причем не обязательно увеличение последней, на третье место поставлю процессор. Да еще Винда сама по себе со временем начинае притормаживать, если не проводить определенных манипуляций, так уж она запрограммирована своими создателями, от этого никуда!
(17) AVMCo, Я с тобой сагласен на 100 процентов.Сам не раз сталкивался с такой проблемой дико висела сеть.
Решилось установкой нового винта SSD и все полетело.
интересно, что значит «в высоконагруженной системе большое количество пользователей формируют отчеты»???? — как то странно звучит — для этого есть другие решения: тех же кубов или программные — правильно написать этот отчет, что бы он исполнялся на сервере — отговорки используют стандартные для «высоконагруженной системы» — это моветон…. или некомпетенция.
(17) AVMCo,
Если статья интересная, где «+»))
А если серьезно, я бы не использовал слово » поболе влияют ЖД и память (из личного опыта)», а заменил бы на чаще. Но, учитывая тот факт, что сам занимаюсь проблемами производительности, могу казать так — проблемы сети не всегда так очевидны, и их понимание в контексте учетных систем главная задача статьи.
(18) мне ситуация напоминает анекдот (без обид):
«Вовочкана биологии пишет лаб. работу.
1. Оторвал таракану лапку, говорю: «Беги!» Бегит
2. Оторвал таракану вторую лапку, говорю: «Беги!» Бегит
3. Оторвал таракану все лапки, говорю: «Беги!» Не бегит
ВЫВОД: Таракан без ног не слышит!»
(19) К основной цели статьи ваше пояснение мало относится: имеется в виду некая операция (отчет частный случай) учетной системы, которая отправляет достаточно большое количество запросов к серверу БД. «Отчет» — использовался, так как часто приходится сталкиваться с большим количеством запросов именно в отчетах))
p.S> Программа для замеров сети у пользователей скоро будет выложена.
Гигабит…Это уже 125 Мб/с, ну, ладно, 100…Скорость, которой должно с лихвой хватать для работы 1-2-3 пользователей(да и харды в режиме случайного чтения ненамного быстрее выдают)…А, как правило, замедление существенное при работе от сети.Толстого клиента точно, серверный вариант, наверно, тоже…Сеть настроить не всегда доступно, поэтому файловые базы жму ТИИСом, начинают шевелиться побыстрее…
(20)
я не теоретик, я практик, для меня показатель, когда на 486 Celerone (сервере) 20 компов работают без тормозов в сети
Выложили приложение для замеров отклика сети.
Можно проверить на реальном оборудовании (лучше в нерабочее время))
Жду от Вас вопросов, готов оперативно ответить.
Обратите внимание на деградацию параметра: количество запросов в единицу времени для одной сессии.
у нас на предприятии между сервером 1с и СУБД был канальчик в 1ГБ/с
одновременно работали ~20 пользователей
на сервере крутили стандартные БП, ЗУП и +»специальная разработка» для предприятия на базе 1С8
по мере увеличения нагрузки на эту «специальную» разработку, от пользователей начали поступать жалобы на медленную отзывчивость и вскоре ошибки с таймаутами (!!!)
временное решение нашлось путем внедрения нового коммутатора с функцией LinkAgregation
и объединением 2х каналов по 1ГБ/с в один на 2ГБ/с на обоих серверах
в тот момент я тоже уверовал в прямую зависимость скорости работы сервер1с-сервер СУБД от скорости сет.интерфейсов
Терминальный сервер плюс хорошая сеть.По любому на терминальном сервере быстрее работает.
Обработка любопытная, хотя видно что «рабочий инструмент» — не все работает как нужно.
Но главное — информацию для анализа дает. Одно неудобно — требуется установка. Для серверов — не везде можно поставить, да и не всегда хочется ставить. Что-нибудь «портабельное» возможно?
(26) aspirator23,
Спасибо за отклик.
«Не все работает как нужно» — можете конкретно указать, чтобы можно было доработать.
По поводу «портабельности» — установка программы требуется для удобства, если нет возможности на сервере сделать установку, можно установить программу на любом компьютере, далее каталог установки копировать на сервер, открывать с шары… Или я не так вас понял?
(27) Спасибо, все заработало. Вопросы снимаются: если «повертеть, покрутить» — все становится понятным.
Если на SQl работает одна БД, то сервер приложений 1с, размещенный на другом сервере, открывает одну сессию?
Следовательно деградации скорости сетевого соединения характерна для случая когда к одному SQl обращаются с нескольких серверов приложений 1с?
(28) aspirator23,
количество соединений с MS SQL не связано с количеством серверов приложений 1С или рабочих процессов.
Оно связано с необходимостью в зависимости от количества одновременно работающих пользователей.
Деградация характерна для случаев, когда есть много пользователей (скажем более 5 пользователей) выполняют операции 1С с большим количеством небольших запросов к серверу MS SQL. В качестве примера можно привести Инталев 1С, учитывая ее архитектуру, для выполнения отчета может понадобится более 50000 запросов к MS SQL, получается что скорость сети имеет в этом случае очень большое значение и ее деградация при многопользовательской работе сказывается на длительности этих отчетов и всех операций.
(4) Диски выходят из строя из-за неоптимальности кода — когда постоянно идут обращения неявные к базе (получение данных через точку)