170 похожих чатов

Привет, господа. Кто шарит в производительности, подскажите, пожалуйста, решение. Нужно мне

выполнять 1000 http запросов асинхронно (делаю с использованием async function, но не делаю await, так как ответ не особо важен, главное послать http запрос).

Тысячи запросов уходит, приходит ответ на последний через 4 секунды.

Ок, как сделать, чтобы 10000 запросов по времени тоже занимали эти самые 4 секунды, а не 40?

Пробовал через cluster (каждая 1000 запросов в своём nodejs процессе), но по факту получаю падение производительности на 10-20%, чем без использования кластера.

Что можно предпринять? Или только менять js на nim/rust/kotlin?

14 ответов

36 просмотров

точно что менять не нужно, там думаю такие же проблемы будут если не больше

Вы пишете на клиенте async function() { for....} без await внутри и ждёте асинхронного поведения выполнения запросов, правильно я понимаю?

X- Автор вопроса
Nv
Вы пишете на клиенте async function() { for....} б...

Я пишу for (){ post().then().catch() } async function post(){ return await axios.post()........ } И получаю параллельный вызов функции. Дополнительно ещё его обрабатываю (

X
Я пишу for (){ post().then().catch() } async func...

а целевой сервис на который вы эту пачку ДДОСа делаете, пропускает столько запросов?

X- Автор вопроса
✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
а целевой сервис на который вы эту пачку ДДОСа дел...

Даже если делать на localhost, вместо целевого сервиса, все равно очень долго выходит. И да, он потянет. Это биржа :)

X
Я пишу for (){ post().then().catch() } async func...

Просто если функция не асинхронна, внутри нет await, то будет тупо последовательно выполнять 10к запросов, пока их все не пройдет. Остальной синхронный код остановится у приложения во время выполнения. Если о остального кода нет,и пелевать, то,так или иначе, 40 секунд в 4 секунды превратить затруднительно...Таков объем данных и сеть. Попробуйте отказаться от аксиоса, кстати. И в жс нет параллельного выполнения кода, если это не треды, отдельные процессы. Есть эта асинхронщина треклятая в рамках одного потока)

в этом случае каждый вызов post() создаст новый промис, который уже добавит задачку эвент лупу отправить запрос по сети

X- Автор вопроса
✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
в этом случае каждый вызов post() создаст новый пр...

А как иначе? Вроде ж, никак. С учётом того, что есть только один поток, в котором я эти самые задачки и отдаю nodejs для обработки. Или async/await добавляет времени много на процессинг? Если да, то какова альтернатива? Коллбеки или ещё как то?

X- Автор вопроса

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта