|
Высоконагруженные веб-сервисы 1С - скорость работы | ☑ | ||
---|---|---|---|---|
0
MaxisUssr
02.03.15
✎
09:41
|
Есть база на PostgreSQL, веб-сервер Apache, опубликован к примеру простейший веб-сервис (чтобы не отвлекаться на обсуждение кода методов, структуры базы и т.д), отдает данные типа 10 строк "Код-наименование". Этот запрос в самом методе веб-сервиса и упаковка в пакет XDTO происходит так - в общем тестируя через SoapUI получаем цифру 77-88 миллисекунд на ответ.
Но вот проблема - если делать нагрузочный тест, к примеру, кол-во запросов за секунду - то я могу получить всего 180 таких запросов , что очень мало. Во время этого теста проц на сервере 1С загружен на 100%, все остальное вроде не загружено. Вопрос - где читать, выяснять, что нужно в первую очередь настроить или прикупить м.б (железо?), чтобы увеличить количество запросов, которое может обработать сервер? Или нужно стремиться ускорить выполнение одного запроса? |
|||
1
Rebelx
02.03.15
✎
10:09
|
(0) запросы шлешь последовательно? и реально так будет в жизни?
Попробуй параллельно, с разных машин, и смотри как распараллеливается запрос в 1С - должно быть много сеансов. если не хватает - добавляй сеансы - RTFM |
|||
2
MaxisUssr
02.03.15
✎
10:13
|
(1)
Шлю через SoapUI пакет запросов, с разрывом в 1-5 миллисекунд каждый. Сеансов дофига в 1С. |
|||
3
shuhard
02.03.15
✎
10:14
|
(0) если есть бюджет, то ответ очевиден - http://www.gilev.ru/
|
|||
4
Rebelx
02.03.15
✎
10:15
|
(2) дофига это сколько? добавь в ответ информацию о текущем сеансе. Посмотри статистику, сколько реально сеансов работает.
|
|||
5
Rebelx
02.03.15
✎
10:18
|
(3) нифига не очевиден. или ты думаешь, что они знают ответы на все вопросы? Или если ты не знаешь ответ на какой-нибудь вопрос - сразу лапки к верху, сдаемсяяяя?
|
|||
6
vde69
02.03.15
✎
10:24
|
(1)>>>77-88 миллисекунд на ответ.
это примерно 1 сек на ответ, по моему ответ очевиден - надо сокразать время на ответы.... хотя-бы, до 0.1 сек.... >>>кол-во запросов за секунду - то я могу получить всего 180 таких запросов то есть ты имеешь примерно 150 конектов в секуунду... проблемма в том, что 1с сеанс поднимает долго, я-бы пошел путем поднятия например 100 сеансов и поодержка их в открытом состоянии через всякие кеши, а замеры производил с второй, третей секунды, ибо первая секунда - это инициализация сеансов... |
|||
7
vde69
02.03.15
✎
10:28
|
(6) кстати я делал похожую систему, только связь апач-1с я делал через ком, держал в переменных 10 открытых ком соединений... и текущие запросы в апаче определял в уже открытые ком обьекты, правда там с правами заморочка, я делал доп параметры в 1с для каждого запроса отдельные права через прарамтры функции делал...
писал на asp |
|||
8
MaxisUssr
02.03.15
✎
10:28
|
(6)
Нет, в 1 секунде 1000 миллисекунд, 77 мс это 0.07 секунд. Поднять 100 сеансов и поддерживать не вариант - проверяется именно количество различных пользователей, которые коннектятся к базе. Если делаю например 2 секунды то получаю всего 280-300 запросов. |
|||
9
Apokalipsec
02.03.15
✎
10:29
|
(8) Железки-то какие?
|
|||
10
MaxisUssr
02.03.15
✎
10:29
|
(7)
10 соединений - этого хватало? Почему не 100 соединений? (9) Железо Xeon 2.4 2 проца , 12 гб памяти, ОС 64 бит. |
|||
11
vde69
02.03.15
✎
10:31
|
(8) у тебя есть ID сеанса апача, его передаешь в виде параметра в функцию, по этому ID в 1с определяешь пользователя и его права...
хотя конечно практика может все мои слова опровергнуть... |
|||
12
Apokalipsec
02.03.15
✎
10:31
|
распараллеливание, держать несколько веб-расширений, выделить под них отдельный сервер в кластере. Посмотреть на сам запрос,посмотреть его план.
В общем вариантов-то очень много) У проца все ядра загружены? Какая платформа? Как сеансы в рабочем процессе живут - все в одном? |
|||
13
vde69
02.03.15
✎
10:33
|
(10) у меня было не на столько нагружено... у меня одновременоо 20-30 потоков было всего, мне хватало за глаза и одного сома... но делал на преспективу которая не случилась...
|
|||
14
MaxisUssr
02.03.15
✎
10:36
|
(4)
Например результат 173 ответа - в 1С в регистре логов вижу те же 173 сеанса - в чем смысл? |
|||
15
MaxisUssr
02.03.15
✎
10:38
|
(12)
Запрос пустой совсем. "Выбрать Таб.Наименование, Таб.Код из Справочник.ИмяСпр". И все. Платформа 8.2.14.528. |
|||
16
MaxisUssr
02.03.15
✎
10:58
|
(12)
Где почитать про "Держать несколько веб-расширений, выделить под них отдельный сервер в кластере"? |
|||
17
MaxisUssr
02.03.15
✎
11:08
|
(12) Подожди - что-то я запутался - у меня же SOAP веб-сервисы, причем тут веб-расширения?
|
|||
18
Rebelx
02.03.15
✎
11:11
|
(14) Нет, обманул. надо смотреть не сеансы, а соединения.
(17) веб-сервисы работают через веб-расширение. 1С выделяет пул соединений. по-умолчанию вроде 10 если надо масштабировать - надо увеличить пул. но лично я не знаю, как апач распределяет запросы по соединениям |
|||
19
MaxisUssr
02.03.15
✎
11:12
|
(6)
Особой разницы нет, судя по тесту. Если 100 сеансов пуляю одновременно или например 40 сеансов (которые могут не по одному разу успеть пульнуть запрос) - примерно 160-200 запросов за секунду отрабатывает и там, и там. |
|||
20
koreav
02.03.15
✎
11:16
|
(0) Какой процесс грузит до 100%? Схему можно масштабировать поставив два апача, а перед ними балансировщик.
|
|||
21
MaxisUssr
02.03.15
✎
11:22
|
(20)
Postgre грузит. |
|||
22
MaxisUssr
02.03.15
✎
11:25
|
(21)
Ошибся - Rphost конечно же. |
|||
23
Rebelx
02.03.15
✎
11:28
|
(22) ну тут ответ очевиден - уперлись же в железо
|
|||
24
Serginio1
02.03.15
✎
11:38
|
||||
25
Serginio1
02.03.15
✎
11:40
|
Упрости УстановкаПараметровСеанса
v8: Web сервис, момент подключения Для многих случаев можно для вэб сервисов просто упростить УстановкаПараметровСеанса |
|||
26
koreav
02.03.15
✎
11:52
|
Пример схемы с балансировщиком http://habrahabr.ru/post/213739/
в вашем случае каждый апач должен обращаться к отдельному серверу приложений, если затык в rphost |
|||
27
MaxisUssr
03.03.15
✎
14:31
|
(25)
Помогло немножко совсем. 0.1 сек. выиграл вроде. |
|||
28
Fragster
гуру
03.03.15
✎
14:44
|
а еще можно заюзать вместо вебсервисов http-сервисы. по крайней мере будет контроль над объемом сериализации.
|
|||
29
Fragster
гуру
03.03.15
✎
14:44
|
(28)+ вплоть до полного её отсутствия
|
|||
30
MaxisUssr
03.03.15
✎
14:50
|
Функция GetCategories()
Возврат Неопределено; КонецФункции отклик даже на такой метод - уже 0.086 сек; установку параметров сеанса отключил. |
|||
31
Fragster
гуру
03.03.15
✎
15:07
|
(30) а на http сервис сколько задержка?
|
|||
32
Гёдза
03.03.15
✎
15:10
|
(6) веб сервер кэширует соединение с 1с, так что последовательные запросы новый коннект не поднимают
|
|||
33
MaxisUssr
03.03.15
✎
15:17
|
(31)
У нас 8.2.14... , поэтому HTTP к сожалению нет |
|||
34
MaxisUssr
04.03.15
✎
12:47
|
Проверил на 8.3 (поставил файловую базу) - пустой запрос примерно 20 миллисекунд идет, на SOAP тот же пустой запрос 0.7 - 0.8 миллисекунд! Не знаю, как на серверной 8.3 будет себя вести - подозреваю, что также.
|
|||
35
MaxisUssr
04.03.15
✎
13:01
|
(34)
Ошибка - В SOAP 70-80 миллисекунд, в HTTP - до 20 миллисекунд |
|||
36
MM
04.03.15
✎
13:34
|
(35) А если нагрузить http?
Может там и нагрузка на процессор меньше при большом количестве обращений? |
|||
37
pumbaEO
04.03.15
✎
15:18
|
5 apache и haproxy с балансировкой robinbobin.
|
|||
38
MaxisUssr
05.03.15
✎
10:25
|
(36)
Да, хочу нагрузить его, но вот проблема - у нас 8.2 стоит серверная, а на 8.3 лицухи на сервер нету. Вчера вечером-ночьюпробовал поставить агент 8.3 на другой порт - не работал - пишет что нет серверной лицензии. Попробовал тогда отключи агент 8.2, включить 8.3 на стандартном 1541 порту, лицензию нашел но базу не создавал (видимо что-то еще недоставил, а рушить все, удаляя текущий агент сервера - не могу - люди же работают). Удалось только в файловом варианте развернуть 8.3 и нагружить http - но там печаль - никакой параллельности вообще, вроде, читал, что в файловой параллельности нет совсем. Добавил 6 или 8 рабочих процессов на сервер 1С - в результате процы стали немного больше загружены при массовой нагрузке "тяжелыми" запросами (легкие запросы полностью грузили сервер и при одном раб.процессе) |
|||
39
MM
05.03.15
✎
10:28
|
(38) Там надо файл лицензии сделать видимым 8.3, в одном из конфигурационных файлов путь указать. Если уж перемещать файл лицензии не хочется.
|
|||
40
fisher
05.03.15
✎
10:33
|
(39) Велика вероятность, что для 8.3 придется лицензировать заново. Механизмы лицензирования допиливались и что-то может не совпасть. Мне при переходе с 8.2 на 8.3 на том же железе пришлось генерить лицензии заново.
|
|||
41
MaxisUssr
05.03.15
✎
10:36
|
(39)
Если отключить агент 8.2 и включить тупо 8.3 на том же порту, как я сделал - он нашел лицензии, но базу не смог создать (видимо не доделал я что-то - а удалять рабочие настройки и агента сервера и консоль 8.2 не стал, т.к сервер-то рабочий). |
|||
42
pumbaEO
05.03.15
✎
10:45
|
(41) 1. 8.3. запусти на другом порту.
2. поставь сервер 1с на линухе и соедини их добавив к виндовому серверу 8.3 еще один сервер по ip. 3. в ролях для виндового сервера добавь только роль "Лицензирование", а остальные запрети. Для линуксового все разрешить. |
|||
43
fisher
05.03.15
✎
11:15
|
Вообще, интересная ветка. Ежу было понятно, что 1С по определению не годится для публичных сервисов. Только для приватных порталов. Но результаты реальных тестов - это уже конкретная информация.
И я не знаю, как это удалось разработчикам 1С, но давно уже в тестах замечена удивительная тенденция - очень часто узким местом на банальных операциях с СУБД становится не дисковая подсистема (что как бы логично), а процессорные мощности. |
|||
44
fisher
05.03.15
✎
11:17
|
Можно, конечно, побыть оптимистом и увидеть причину этого в эффективном кэшировании.
|
|||
45
MaxisUssr
05.03.15
✎
11:18
|
(43)
Про публичные сервисы - спорное утверждение. Если нам нужно не постоянное получение данных миллионов строк, а какое-то действие (например, принять заявку/оставить отзыв и т.п) - по-моему 1С для этого вполне сгодится для средних (не больших и гигантских) порталов. |
|||
46
fisher
05.03.15
✎
11:27
|
(45) Согласен, погорячился. Для общедоступного портала для размещения заказов в компании, где поток заявок заведомо ограничен и хорошо прогнозируем - сгодится вполне.
А вот даже просто для хранения данных, доступ к которым может стать резко популярным - уже болт. |
|||
47
MaxisUssr
05.03.15
✎
11:38
|
(46)
Это очень печально - платформа-то в принципе не самая быстрая, но работает стабильно - если удастся разобраться с масштабируемостью (как например совет в (37)) - может быть создан неплохой проект. |
|||
48
oleg_km
05.03.15
✎
12:23
|
(47) Ну просто конфу придется затачивать под быстродействие. Например как многие создатели WMS для мгновенного отклика избегают регистров, все делают на документа, блокировки только на изменение текущих остатков. Это слабофункционально, но я у себя так делал модуль инвентаризации - все летает и никаких блокировок.
|
|||
49
MaxisUssr
05.03.15
✎
12:44
|
(48)
Да, приходится все пихать в пару регистров сведений с примитивными строковыми и числовыми полями. Чтобы быстро считывать это все. |
|||
50
Гёдза
05.03.15
✎
12:44
|
Свой фэйсбук на 1с хочешь написать чтоли?
|
|||
51
MaxisUssr
05.03.15
✎
12:46
|
(50)
Да нет конечно - но даже 300-600 запросов в секунду - очень большая проблема получить. И это вроде как считается немного. |
|||
52
Гёдза
05.03.15
✎
12:48
|
(51) последовательных?
|
|||
53
Гёдза
05.03.15
✎
12:48
|
параллельность достигается не только за счет уменьшения времени 1 процедуры
|
|||
54
MaxisUssr
05.03.15
✎
12:51
|
(52)
Параллельных конечно |
|||
55
Гёдза
05.03.15
✎
12:53
|
(54) но тут уже все от железа зависит
|
|||
56
Гёдза
05.03.15
✎
12:54
|
На чем затык в железе?
|
|||
57
MaxisUssr
05.03.15
✎
12:59
|
(56)
Процы загружены на 100% (на мелких запросах) и процентов на 60 на средних запросах (пробовал увеличить пул соединений Apache, в Postgre установил тоже макс.кол-во соединений 10000 - особо не помогло. Помогло немного добавление нескольких рабочих процессов к серверу 1С) |
|||
58
fisher
05.03.15
✎
15:15
|
(57) Ну так ты похоже в процы и упираешься. То, о чем я говорил в (43). На сервере приложений 1С оказывается подозрительно много накладных расходов для банальных операций.
|
|||
59
jk3
06.03.15
✎
23:54
|
(51) Интересно, при линейном увеличении количества параллельных запросов, время ответа растёт линейно, не замеряли?
|
|||
60
iv_iv_iv
07.03.15
✎
02:55
|
(50)
Да нет конечно - но даже 300-600 запросов в секунду - очень большая проблема получить. И это вроде как считается немного. ------------ вам надо юзать sap - с вашей производительностью. |
|||
61
rphosts
07.03.15
✎
03:18
|
(28) +1 Post-запросы быстрее отрабатывают чем Web-сервисы
|
|||
62
Serginio1
07.03.15
✎
12:29
|
||||
63
MadHead
07.03.15
✎
13:32
|
хотите скорости в данном вопросе, то вам на java. Или что бы все просто и из коробки, то на .net. Net конечно менее гибко и помедленнее, но если проект простой, то меньше времени на кофигурацию потратите
|
|||
64
MadHead
07.03.15
✎
13:34
|
интегрировать сейчас модно через rest full
|
|||
65
Serginio1
07.03.15
✎
14:48
|
||||
66
Serginio1
07.03.15
✎
15:18
|
Можно сгенерить классы для Code First
http://www.c-sharpcorner.com/UploadFile/ff2f08/entity-framework-code-first-data-annotations/ |
|||
67
Serginio1
07.03.15
✎
15:21
|
||||
68
Serginio1
07.03.15
✎
15:53
|
||||
69
Serginio1
07.03.15
✎
16:08
|
||||
70
Serginio1
07.03.15
✎
16:14
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |