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

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

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

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

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

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

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

14 ответов

38 просмотров

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

Вы пишете на клиенте 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- Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта