|
HTTP сервис - количество запросов в секунду | ☑ | ||
---|---|---|---|---|
0
andryscha1c
14.10.24
✎
22:52
|
Подскажите, какое количество запросов в секунду способен принимать http сервис в 1С, чтобы не влияло на скорость обращения к сервису? Если в секунду поступает около 10 запросов, это нормально или могут возникнуть проблемы?
|
|||
1
oleg_km
14.10.24
✎
23:01
|
Смотря какая продолжительность обработки запросов. Но я как-то пробовал 1С на прочность с помощью LOIC. В конце концов упал весь сервер 1С. Пришлось перезапускать. Поэтому, если собираетесь основную базу выставить в инет, нужен балансировщик, ограничивающий интенсивность запросов.
|
|||
2
andryscha1c
15.10.24
✎
09:28
|
(1) Балансировщик, что вы имеете в виду, могли бы что-то порекомендовать? Мгновенные запросы получения остатков с другой базы планируется получать сразу, данные на создание элементов и документов планируется организовать через очередь заданий.
|
|||
3
arsik
15.10.24
✎
08:17
|
Может все же рест взять?
|
|||
4
andryscha1c
15.10.24
✎
09:23
|
(3) rest и планируется
|
|||
5
Garykom
15.10.24
✎
09:47
|
(0) веб-серверов с публикацией может быть несколько на кластер серверов 1С
так что затык будет не в http-сервисе а в самом сервере 1С и обвязке (nginx) перед веб-серверами |
|||
6
arsik
15.10.24
✎
10:10
|
(4) Ну рест быстрый - должно работать. Я бы все же сделал нагрузочное тестирование.
|
|||
7
andryscha1c
15.10.24
✎
10:18
|
(6) rest явно же будет быстрее и производительнее, чем soap?
|
|||
8
Asmody
15.10.24
✎
11:15
|
(7) нет. вы не там ищете производительность
|
|||
9
andryscha1c
15.10.24
✎
11:23
|
(8) что вы имеете в виду?
|
|||
10
Asmody
15.10.24
✎
11:44
|
(9) скорость сериализации в json (в случае с rest) или в xml (при soap) не играет существенной роли. основное время уйдёт на извлечение/запись данных и бизнес-логику.
|
|||
11
andryscha1c
15.10.24
✎
11:48
|
(10) понял, спасибо. Пока что придерживаюсь rest все же. Но вопрос открыт все еще на количество вызов в секунду и организации балансировщика.
|
|||
12
oleg_km
15.10.24
✎
12:33
|
Я сделал в C# генератор запросов и посмотрел:
using System.Net.Http; using System.Net.Sockets; using System.Threading.Tasks; namespace testHTTP { internal class Program { static readonly HttpClient cli = new HttpClient(); static void Main() { // DoHttp(); DoTCP(); Console.WriteLine($"Finished. Press any key..."); Console.ReadLine(); } static void DoHttp() { //const string url = @"http://srv-3:8082/OperSys/hs/sys/test"; const string url = @"http://esb241.agp.local:8082/DevOperOKM/hs/sys/test const int cntReq = 50; List<Task<string>> tasks = new List<Task<string>>(); for (int i = 0; i < cntReq; i++) { Task<string> res = cli.GetStringAsync(url); Console.WriteLine($"{i}: {res.Id}: {DateTime.Now}"); tasks.Add(res); } int ii = 0; while (tasks.Count > 0) { Task<string>[] tasks1 = tasks.ToArray(); int id = Task.WaitAny(tasks1); Task<string> res = tasks1[id]; Console.WriteLine($"{ii}: {id}: {res.Id}: {res.Result}"); tasks.Remove(res); ii++; } } static void DoTCP() { const int cntReq = 50; TcpClient[] clis = new TcpClient[cntReq]; for (int i = 0; i < cntReq; i++) { Console.WriteLine($"Socket {i} : {cntReq - 1}"); clis[i] = new TcpClient(); clis[i].ConnectAsync("localhost", 9106); } Console.WriteLine($"Wait. Press any key..."); Console.ReadLine(); } } } |
|||
13
andryscha1c
15.10.24
✎
12:39
|
(12) сколько было одновременных запросов? по итогу упал веб сервис? Как правильно организовать балансировщик?
|
|||
14
arsik
15.10.24
✎
12:54
|
(13) так от оборудования же зависит.
Делаешь свой тест и увидишь. Может не балансировщик делать, а через nginx проксировать. При чрезмерных нагрузках отфутболивать прямо там, с ошибкой "попробуйте зайти позже" |
|||
15
timurhv
15.10.24
✎
16:39
|
(11) Ответ от 1С сразу нужен?
Если нет, можно организовать через брокеров сообщений. Либо на стороне 1С писать сообщения в регистр сведений (измерение УникальныйИдентификатор, реквизит ХранилищеЗначений) и потом уже в 1 поток запросом их выбирать и обрабатывать по бизнес-логике. |
|||
16
novichok79
15.10.24
✎
16:46
|
берешь k6, делаешь скрипт и пуляешь в свой 1С, смотришь как оно умирает или наоборот справляется.
|
|||
17
palsergeich
15.10.24
✎
16:56
|
(0) Зависит от оборудования, у меня и 100 в секунду в течение часа нна быстром ответе жило, да время ответа несколько увеличивается со временем, но отвалов единицы.
Будет плохой код - может и 10 в сек не потянуть |
|||
18
Web00001
15.10.24
✎
17:05
|
(10)1С считает иначе https://wonderland.v8.1c.ru/blog/http-servisy-v-prikladnom-reshenii/
|
|||
19
andryscha1c
15.10.24
✎
22:07
|
А кто нибудь использовал oData?пишут что это самый быстрый обмен, с другой стороны читал что если будут отборы и большой объем данных он станет медленее. Есть кто использовал на практике или какие либо официальные источники?
|
|||
20
novichok79
17.10.24
✎
11:37
|
(19) я использовал на практике, это майкрософтовский стандарт.
в любом обмене, если будут отборы или большой объем данных он станет медленее )))))) ваши проблемы решит нагрузочное тестирование на сценариях приближенных к реальным. а то мы тут рассуждаем о сферическом коне в вакууме. я вам уже скинул k6, но вы проигнорили ответ. в этом k6 плюс в том, что вы можете написать какой угодно тест с какими угодно данными. так вот пишете скрипт на js, запускаете с разными показателями нагрузок, приближенными к реальным (например 1000 запросов в секунду), после тестов k6 в консоли пишет сколько заходов было, среднее время ответа и т д по вашим конечным точкам API. подобные задачи (не в 1С правда) я решал именно так. |
|||
21
novichok79
17.10.24
✎
11:39
|
еще кстати k6 экспортит данные о нагрузочном тесте в prometheus, так шо можно в графане красивые графики рисовать еще.
хотя для вашей задачи достаточно будет просто позапускать тест вашего API с разными показателями нагрузки и решить - оно норм или не норм. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |