Имя: Пароль:
IT
Админ
Тормоза при разнесении сервера приложений и SQL сервера на разные виртуальные машины
0 Dmitriy_
Kolesnikov
 
17.09.21
15:08
Пытаюсь понять причины проблемы с производительностью (тест Гилёва используется в качестве инструмента измерения)

Есть несколько виртуальных машин, расположенных в одном датацентре, часть - на одном гипервизоре, часть - на разных. Сеть 1 ГБит, по измерениям с помощью iperf, проблем не видно. Пинги 1 мс, пакетами по 65000 байт - 2 мс. Диски: частично обычные RAID, часть SSD, часть NVMe. Всё это оказывает некоторое влияние на результат измерений, но не существенное. ОС - от W2012S до W2016S. СУБД - MSSQL Разных версий, в кластере и автономно.

Самое интересное - в следующем.
Если я располагаю сервер приложений и СУБД на разных виртуальных машинах, тест Гилёва показывает всегда и стабильно 4 попугая.
Если на одной - результат может быть разный, но не меньше 10 попугаев (зависит от прочих факторов).
Но какие бы сервера по производительности не связывал по сети - результат стабильно 4.

У меня закончились идеи относительно того, что это может вообще быть.
1 Вафель
 
17.09.21
15:09
на одной машине конечно быстрее ибо шаред мемори
2 ДенисЧ
 
17.09.21
15:10
4 попугая по Гилёву - это пошаговая Цивилизация-5 на ПеньПро с 32 МБ памяти...
3 VladZ
 
17.09.21
15:21
Да и 10 - не фонтан.
4 H A D G E H O G s
 
17.09.21
15:21
(0) Что показывает CPUZ и CrystalMarks ?
5 H A D G E H O G s
 
17.09.21
15:23
(0) Лицензия - программная?
6 Garykom
 
гуру
17.09.21
15:27
(0) дисковая подсистема надеюсь не третья виртуалка?
7 guevara74
 
17.09.21
15:30
(0) обратимся к первоисточнику, у которого вы скачали тест.  http://www.gilev.ru/virt1c/

"Однако схема такая сразу начинает работать медленней. Причём, например результат нашего теста может упасть сразу в два раза.
Почему? Например, потому что раньше сервер 1С и сервер СУБД внутри одной операционной системы общались между собой по протоколу Shared Memory, и это было очень быстро. А теперь используют сетевой интерфейс, а даже внутри одного сервера виртуализация сети- задача по ресурсам совсем не бесплатная.

А кроме того, есть ещё и неудобные для 1С сочетания факторов, вот как на снимке: использование сетевого интерфейса WMXNET3 практически гарантирует узкое место на передаче данных 1С по сети."

я чаще всего сталкиваюсь с
"ля виртуальных серверов ESXi 6.0 с 1с сервером не используйте сетевые интерфейсы типа WMXNET3, использовать только типа e1000e
Причина такого совета абсолютно не понятна. WMXNET3 - виртуальная (как и e1000e кстати) сетевая карта 10G, с оптимизацией под работу Vmware. Может кто-то прочитал про проблемы с VM Chimney (TSO - TCP Offload) и RSS (Receive Side Scaling) с точностью до наоборот – там надо бы выкинуть e1000e и провести прочее колдунство. http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008925"
8 Garykom
 
гуру
17.09.21
15:44
в случае PostgreSQL нету Shared Memory
9 fisher
 
17.09.21
15:50
Ну, даже из формулировки сабжа понятно, что в сетку затыкается. Почему так сильно - вопрос второй. Можно попробовать проконсультироваться у техподдержки датацентра.
10 fisher
 
17.09.21
15:56
ЕМНИП, для минимизации просадок по сетке при разнесении серверов всегда рекомендовался прямой линк между серваками максимальной производительности. Для подобных целей кажись даже спец-оборудование выпускалось.
11 fisher
 
17.09.21
15:58
А как там оно в датацентре - неизвестно. Может шарится еще с кем-то или на маршрутизаторах как-то режется...
12 Dmitriy_
Kolesnikov
 
17.09.21
16:14
(2) да, документы проводятся по минуте
(5) лицензия программная
Да там есть ситуации, когда между виртуальными машинами - софтсвитч от VMWare. И всё равно 4 попугая.
(7) ну согласитесь, что производительность не должна падать так катастрофически сильно.
13 ДенисЧ
 
17.09.21
16:16
(12) "ну согласитесь,"
Не согласимся. Если виртуалки не находятся под твоим (или гурёвым) надзором - со скоростью там может быть всё, что угодно. Может, у них дата-центр биткойны майнит, а тебе процессоры отдаёт по остаточному принципу...
14 1Сергей
 
17.09.21
16:16
Слава б-гу мы ушли с виртуалок
15 fisher
 
17.09.21
16:22
1 попугай - это скорость света в вашей виртуальной вселенной
А минимальное расстояние между разными серверами виртуальной вселенной - 4 попугайные единицы
16 H A D G E H O G s
 
17.09.21
16:22
(12) ЧТо там по cpuz и crystal ?
17 ansh15
 
17.09.21
16:27
Какие-нибудь E5420, наверное
18 ansh15
 
17.09.21
16:28
В powersave mode
19 eklmn
 
гуру
17.09.21
16:31
Кстати, спрошу пока тут собрались кто в теме
Тестировал кто разнесенные сервера технологию multipath?
имхо должно увеличивать производительность на процентов 20
20 Dmitriy_
Kolesnikov
 
17.09.21
18:30
(16) zabbix показывает, что загрузка аппаратных ресурсов крайне низкая.
21 Dmitriy_
Kolesnikov
 
17.09.21
18:31
Ещё раз повторю: не в ресурсах дело. Ибо перемещаешь СУБД на ту же виртуальную машину, где стоит сервер приложений - как производительность возрастает в 2.5 раза.
22 H A D G E H O G s
 
17.09.21
18:40
(20) ЧТо там по cpuz и crystal ?
23 Winnie Buh
 
17.09.21
19:13
(0) было бы странно, если стало наоборот быстрее
24 Immortal
 
17.09.21
22:00
(22) можно поянсить для ленивых?
ну то есть понятно что максимальная частота должна быть на процах, а crystal для чего?
25 H A D G E H O G s
 
17.09.21
23:39
(24) Посмотреть, как там с чтением-записью 4 Кб блоков в один поток.
26 Конструктор1С
 
18.09.21
06:09
А какая необходимость разлучать СП и СУБД?
27 Конструктор1С
 
18.09.21
06:16
Источником тормозов могут быть:
- маршрутизация (должно быть напрямую)
- настройки виртуалок
- система безопасности
Но не стоит гадать на кофейной гуще, надо собрать счетчики производительности ОС, возможно счетчики производительности СУБД
28 rphosts
 
18.09.21
06:21
(1) шаред мемори ещё настроить нужно
29 Вафель
 
18.09.21
07:40
(27) тут счетчики не помогут
30 Djelf
 
18.09.21
07:55
(8) Не совсем так, в Postgres действительно нет Shared Memory, зато есть Unix Socket. Но только под Linux, естественно. И такое подключение тоже дает % к скорости.
https://gyazo.com/24c66769d8df43277f6607a6e15639a6
31 Конструктор1С
 
18.09.21
08:54
(29) счетчики позволят убедиться, есть/нет проблемы в системных ресурсах
32 Вафель
 
18.09.21
11:16
(31) ну вот ты сам описал возможные проблемы. Какие счетчики на них укажут?
33 Конструктор1С
 
19.09.21
12:25
(32) на эти счетчики не укажут, ну разве что косвенно-косвенно. Счетчики помогут убедиться, что проблем с сетью как таковой нет (или есть). Всё-таки проблемы надо диагностировать, раз уж круг подозреваемых есть, а не пытаться угадать переключая настройки.
Ну и есть такая насущная проблема. Если речь о "чужом" дата-центре, то скорее всего этот дата-центр оказывает услуги нескольким организациям. У таких ДЦ есть "типовой" перечень настроек, утвержденный биг-боссом. И админы очень неохотно их будут менять, если вообще будут. Поэтому на руках нужно иметь не пространное "наша адинэс тормозит на ваших серверах", а набор железобетонных фактов. Для получения фактов нужна диагностика
34 Олеша Попович
 
19.09.21
12:34
(0) чувак у тебя что 4 - очень мало, что 10-тоже очень мало, поэтому забей - в любом случае выкидывать всю систему надо и делать новую
35 Leonardo1c
 
19.09.21
16:32
(0) см квоты по дискам и по сети возможно надо поставить максимум. 1с не оптимизирована по вирт машины.
36 pechkin
 
19.09.21
16:44
(33) еще раз: какие счетчики покажут наличие проблем с сетью. давай конкретику
37 kolts23381
 
19.09.21
18:47
В случае с KVM  нужно использовать virtio для сетевых карт.
38 ildary
 
20.09.21
00:56
(33) А каков смысл в данном случае что-то подсчитывать - какие бы цифры/показатели не были бы получены - на них техподдержка датацентра ответит "И чо, и чо? У нас так принято", или в лучшем случае скажут "для более хороших показателей купите вип виртуалку за стопятьсот рублей". Ну разве что директору сказать "тут 1С неработоспособна, либо покупаем свой сервер либо ищем другой сервис (Фреш?)"
39 ansh15
 
20.09.21
01:31
Что вы хотите от облаков... https://infostart.ru/1c/articles/1235750/
40 H A D G E H O G s
 
20.09.21
01:39
(39) Всегда забавляют фразы
"Ситуацию с плохими результатами тестов безусловно можно исправить в лучшую сторону с помощью грамотной настройки виртуальной машины и физического сервера, где расположена эта машина."

Дроселль подсоса электронов они там подкрутят или Microsoft скрывают криптонастройки Венды. Чтобы ваша ОС работала в 3 раза быстрее, достаточно старой советской...
41 ildary
 
20.09.21
03:21
(40) все говорят, что виртуалку можно правильно настроить и никто и никогда не говорит как это сделать. У Гилева есть частные советы, но догнать по ним невиртуалку по скоростям (с поправкой на накладные расходы) - мне кажется невозможно.
42 ansh15
 
20.09.21
10:14
(40) (41) Эти люди(виртуализаторы 1С), наверное, стоят намного дороже, чем любой гуру Linux-Postgres-1C и знаниями просто так не разбрасываются, держат все в секрете.
43 Garykom
 
гуру
20.09.21
10:21
(41) если виртуалку юзать всего одну на физической машине то она работает с минимальной потерей около 10%
44 Garykom
 
гуру
20.09.21
10:22
(43)+ только вот смысл виртуалки пропадает

(42) нет там никаких секретов
45 ansh15
 
20.09.21
10:24
(44) Это главный секрет :)
46 Garykom
 
гуру
20.09.21
10:25
Основная проблема виртуалок это деление ресурсов физических не все виртуальные

если у вас на физике допустим 24 ядра на две виртуалки можно отдать по 12 ядер и с частотой типа все будет ок
только вот доступ к памяти упс в пересчете на каждую виртуалку в два раза медленней
аналогично с дисковой подсистемой и сетевыми ресурсами - но тут еще все осложнено накладными расходами, короче 2 виртуалки на 1 физике дисковая и сетевая будут не в два раза хуже а в три примерно
47 Garykom
 
гуру
20.09.21
10:27
То что у ТС происходит с 10 попугаев на одной и 4 на разных сервер 1С и sql сервер это обычная картинка вполне хорошо настроенных виртуалок на замечательно утилизированных железках хостера

У него все супер он все свое железо по максимуму наиболее выгодно загрузил и ниипет что у клиентов тормозит
48 Garykom
 
гуру
20.09.21
10:32
(0) сделай тесты CPU-Z Bench https://www.cpuid.com/softwares/cpu-z.html
и CrystalDiskMark https://crystalmark.info/en/software/crystaldiskmark/

на своих виртуалках

и сделай тест https://windowsnotes.ru/programs/izmeryaem-skorost-seti-programmoj-iperf/ между ними
49 H A D G E H O G s
 
20.09.21
10:56
(48) Я уже несколько раз ему писал, но игнор. Что говорит о том, что доступа к учетке может и не быть.
50 ansh15
 
20.09.21
15:04
>>железо по максимуму наиболее выгодно загрузил
То есть, основная(и главная) задача успешно выполнена, а 4 или 10 или один документ одну минуту проводится, это просто сопутствующие потери и печалиться особо нечего.
51 Dmitriy_
Kolesnikov
 
20.09.21
17:16
Отвечаю всем.
1. iperf с флагом -b0 показывает стабильно 1 ГБит\с. Пинги минимальны.
2. Вместо CrystalDiskmark я использую IsMyHDOK - те же яйца, вид в профиль. Смотрю показатель рандомного чтения\записи блоками по 4К. Он точно такой же, как на тестовом железе (моём домашнем ноуте), где есть винты HDD, SSD, NVMe. С одним исключением - поскольку диски подключены как виртуальные (то есть файлы VMWare), имеем падение производительности в 30% относительно железа в режиме pass through.
3. Загрузку ресурсов на виртуальных серверах смотрим в Zabbix, нигде никаких аномалий не наблюдается. Очередей нет. Недозагрузка.
4. Смотреть CPU-Z Bench на виртуальной машине не вижу смысла, т. к., если перегружен гипервизор, то в самой виртуальной машине вы никак это не определите, но производительность упадёт. При этом монитор ресурсов будет показывать ничтожную загрузку CPU.
5. Датацентр арендованный, но всё железо своё. Я не знаю конфигураций железа, но там какие-то очень мощные сервера, они загружены незначительно.
6. На VMWare (прямо в гипервизоре) установлен Касперский, но не на всех гипервизорах. Версии VMWare - 5.5 и 7.
7. Мы попробовали перенести на одном из серверов, где тест показывал 10 попугаев, диски с HDD на SSD. Результат не изменился (стал 9, точнее, но это может быть связано с загрузкой сервера приложений).

Повторяю: проблема НЕ в железе. Проблема в софте. Либо на уровне гипервизора что-то не то с настройками, либо Касперский, либо "умные" коммутаторы задерживают именно пакеты с данными 1С, но не задерживают пинги, либо в СХД (все диски - на SAN)... Проблема именно в разрыве производительности, а не в абсолютных цифрах.
На новом VMWare, дисках NVMe (не pass-through, к сожалению) и при условии установки MSSQL + 1C на одной виртуальной машине я имею 28 попугаев. Но как только переношу одну из двух служб на любой внешний сервер - всё, ровно 4 попугая.
52 Garykom
 
гуру
20.09.21
17:28
(51) >очень мощные сервера, они загружены незначительно
с частотой 2 Ггц да?

>новом VMWare, дисках NVMe (не pass-through, к сожалению) и при условии установки MSSQL + 1C на одной виртуальной машине я имею 28 попугаев. Но как только переношу одну из двух служб на любой внешний сервер - всё, ровно 4 попугая
И это совершенно нормально в случае прохода трафика через сетевой интерфейс

И еще некоторых тонкостях, часть тут http://www.gilev.ru/sqlsize/
53 Олеша Попович
 
20.09.21
17:32
(51) ну и зачем вам виртуалки эти?
54 Immortal
 
07.10.21
18:45
(25) а почему смотреть однопоточную запись надо? Там же рядом такой же тест на многопоточную??
55 sitex
 
naïve
07.10.21
19:22
(0) Виртуалки - 10% - 15% от производительности.
56 Fram
 
07.10.21
21:39
(51) а схд как подключены? Сеть или через плату расширения и SAS кабели ?
57 eklmn
 
гуру
08.10.21
10:30
(51) это 1С детка )
попробуйте на линуксе поднять сервер 1С... ради эксперемента
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой