|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6.
скажите пожалуйста есть ли смысл в асинхронности в этом коде? мне кажется что нет смысла только память грузить, так как ретурн произайдёт только после того как отработает SendAnalysisAsync. или я ошиюаюсь((( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 00:41 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 08:36 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997, Если это долгая операция - то смысл есть(не замораживать интерфейс). А судя по всему, это долгая операция. Асинхронность нужна когда параллельность важнее простоты и имеет смысл. Последовательный код нужен тогда, когда простота кода важнее производительности. Если с введением параллельности ты ускоришь выполнение метода с 100мс до 90мс - то вряд ли это нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:35 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Valery_BJunior1997, Если это долгая операция - то смысл есть(не замораживать интерфейс). А судя по всему, это долгая операция. Асинхронность нужна когда параллельность важнее простоты и имеет смысл. Последовательный код нужен тогда, когда простота кода важнее производительности. Если с введением параллельности ты ускоришь выполнение метода с 100мс до 90мс - то вряд ли это нужно. Да. но в данном примере в чём смысл return? результат всё равно вернётся же через ннн-е количесво времени. Т.е если бы это было Winforms или WPF то понятно поток основной не блокируется и мы спокойно получннеые данные в UI А тут основной паток не блокируется... запрос с клиента отработал но ответа не плолучил? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:43 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuJunior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? Не блокировать основной поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:47 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997handmadeFromRuJunior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? Не блокировать основной поток. Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:53 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997handmadeFromRuJunior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? Не блокировать основной поток. если идет вопрос о сервере и асп приложение то вызов в коде асинхроного вызова на долгую операцию даст асп потоку что был использован для запроса сделать полезную работу по обработке еще одно реквеста к примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:55 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttJunior1997пропущено... Не блокировать основной поток. Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс. так в том и дело в данном примере ничего другого Action не делает. Поэтому возникли вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:56 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuJunior1997пропущено... Не блокировать основной поток. если идет вопрос о сервере и асп приложение то вызов в коде асинхроного вызова на долгую операцию даст асп потоку что был использован для запроса сделать полезную работу по обработке еще одно реквеста к примеру. Да речь идёт про ASP, А что тогда с результатом? ПОлучается так что юзер открыл страницу. она не блокируется срендерилась быстро очень. но данных на ней нет и юзер переходит а другую страницу думая что это ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:00 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997Да речь идёт про ASP, А что тогда с результатом? ПОлучается так что юзер открыл страницу. она не блокируется срендерилась быстро очень. но данных на ней нет и юзер переходит а другую страницу думая что это ошибка? ты мыслишь очень узко. у тебя может 10к юзеров онлайн и делать свои запросы к серваку. ты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. поэтому она оверхед на быстрой операции. время выполнение не улушиться конечно же ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:05 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRu, Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:19 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997, How Requests Are Processed by the Thread Pool In general, use synchronous methods for the following conditions: автор- The operations are simple or short-running. - Simplicity is more important than efficiency. - The operations are primarily CPU operations instead of operations that involve extensive disk or network overhead. Using asynchronous action methods on CPU-bound operations provides no benefits and results in more overhead. In general, use asynchronous methods for the following conditions: автор- You're calling services that can be consumed through asynchronous methods, and you're using .NET 4.5 or higher. - The operations are network-bound or I/O-bound instead of CPU-bound. - Parallelism is more important than simplicity of code. - You want to provide a mechanism that lets users cancel a long-running request. - When the benefit of switching threads outweighs the cost of the context switch. In general, you should make a method asynchronous if the synchronous method waits on the ASP.NET request thread while doing no work. By making the call asynchronous, the ASP.NET request thread is not stalled doing no work while it waits for the web service request to complete. - Testing shows that the blocking operations are a bottleneck in site performance and that IIS can service more requests by using asynchronous methods for these blocking calls. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:21 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ? Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:26 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Valery_BhandmadeFromRuты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ? Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ? ага hVostt Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память. (именно про быстрые результаты) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:42 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVostthandmadeFromRu, Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. А если не сразу. Мне вот не понятно. Получается так что если запрос отработал пришёл респонс.... данных нет. и пока данных нет то юзер может запрашивать другие данные с сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:46 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Valery_B, Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:46 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuhVosttНу не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память. (именно про быстрые результаты) во-первых, в asp.net core отказались от контекста синхронизации, что конечно приводит к отсутствию возможности хранить принципала в контексте потока. во-вторых, если асинхронный метод возвращает завершённую задачу никакой упаковки и работы с потоками нет, всё выполняется синхронно, как вызов обычного метода. кое какой оверхед при этом конечно есть, чуть больше кода на реализацию state machine, но совсем не критично. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 12:46 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuValery_Bпропущено... Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ? Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ? ага hVostt Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память. (именно про быстрые результаты) для таких задач(быстрых операций) нужно использовать ValueTask. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 14:15 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttJunior1997пропущено... Не блокировать основной поток. Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс. Ето если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше. Получится обратный эффект. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 17:47 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
vb_subдля таких задач(быстрых операций) нужно использовать ValueTask. классическое (уже) заблуждение. профит от ValueTask можно получить на очень очень узком спектре операций, которые ещё ко всему прочему надо выявить и протестировать. на деле получается обратная ситуация. обычно не нужно использовать ValueTask и тем более думать, что это решение проблемы с производительностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 18:44 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vЕто если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше. Получится обратный эффект. это не совсем корректный взгляд на вещи. во-первых, перед базой может стоять кеш в виде редиски, тоже асинк, во-вторых проблема узкого места в БД никуда не уйдёт и без потоков сервера, так как способность обрабатывать все запросы решается масштабированием. а асинк снижает потребность в таком решении. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 18:48 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttHexag0vЕто если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше. Получится обратный эффект. это не совсем корректный взгляд на вещи. во-первых, перед базой может стоять кеш в виде редиски, тоже асинк, во-вторых проблема узкого места в БД никуда не уйдёт и без потоков сервера, так как способность обрабатывать все запросы решается масштабированием. а асинк снижает потребность в таком решении. Выгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 20:13 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vВыгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server? Глупости какие-то говорите. Это не коррелирующие понятия. Если у вас узкое звено это дб сервер, то надо решать эту проблему, при чём тут http сервер? Или вы предлагаете пользователям ловить 503, лишь бы бд сервер не страдал? Какой посыл-то? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 00:07 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vВыгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server? Если вы будете масштабировать http server, то вы обратно придёте к "узкое место это база (такое тоже бывает)... мы нагрузим ее еще больше". То есть к тому, о чём пишет hVostt: надо решать проблему с db server ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 09:21 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Правильно, посыл к тому, что перед тем как переписывать код на асинхронный, нужно понять поможет ли это вообще, и в чем проблема на самом деле. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 09:44 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0v, вы прям Капитан Очевидность :) речь не про переписывание и оптимизацию.. тут кто-то предлагал что-то переписывать? речь о конкретном куске кода и условиях, при которых следует использовать асинхронность ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 10:31 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vнужно понять поможет ли это вообще, и в чем проблема на самом деле перед тем как что-то делать, нужно покрыть всё мониторингом, чтобы не гадать о том, где проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 10:33 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Дмитрий Мухречь о конкретном куске кода и условиях, при которых следует использовать асинхронность Не вижу противоречий ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 10:48 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vДмитрий Мухречь о конкретном куске кода и условиях, при которых следует использовать асинхронность Не вижу противоречий а какие могут быть противоречия, когда речь о разных вещах? в конкретном куске кода вообще некий HttpClient, а вы про какие-то базы рассуждаете давайте что-ли о пропускной способности сети, вдруг проблема там ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 11:01 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Дмитрий МухHexag0vпропущено... Не вижу противоречий а какие могут быть противоречия, когда речь о разных вещах? в конкретном куске кода вообще некий HttpClient, а вы про какие-то базы рассуждаете давайте что-ли о пропускной способности сети, вдруг проблема там HttpClient может обратится к сервису, который обратится к базе. Будем гадать или мониторинг советуйте сразу, кэп? Там дальше пошли общие рекомендации. На вопрос имеет ли асинхронность смысл, ответ зависит от того где проблема. Начинаю повторятся ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 11:30 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vHttpClient может обратится к сервису, который обратится к базе.И вызов сервиса следует делать синхронно, потому что вдруг там база тормозит? Где логика? :) Hexag0vБудем гадать или мониторинг советуйте сразу, кэп?Гадать о чём? Обращается ли тот сервис к базе и тормозит ли она? Гадайте, если вам так хочется :) Hexag0vНа вопрос имеет ли асинхронность смысл, ответ зависит от того где проблемаА если нет проблем, то сначала надо их придумать, чтобы решить, имеет ли асинхронность смысл :) Ладно, ваша мысль понятна: если база тормозит, то первым делом ни в коем случае не переписывать код на асинхронный! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 11:42 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Флуд пошел. Мысль понял, хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 13:59 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0v, мне не кажется, что вы поняли. допустим у вас есть веб-сервер, который начинает испытывать проблемы при обработке запросов, некоторая часть пользователей начинает получать ошибку 503 (сервис недоступен). смотрите -- проблема не в бд, не в сети, а именно в том, что веб-приложение не справляется с нагрузкой. какие есть варианты? начинаете масштабировать горизонтально, увеличиваете количество серверов с веб-приложением, размещаете их за балансировщиком. теперь возвращаемся к async. использование async/await позволяет довольно существенно снизить потребность в количестве серверов при масштабировании, а зачастую и в масштабировании вообще. так вот. вы поняли, что ваша многострадальная БД тут вообще ни при чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 16:57 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vФлуд пошел. флуд ещё не пошёл, но если вам не удастся донести до вас элементарные вещи, то до него недалеко :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 16:59 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997 Код: c# 1. 2. 3. 4. 5. 6.
скажите пожалуйста есть ли смысл в асинхронности в этом коде? мне кажется что нет смысла только память грузить, так как ретурн произайдёт только после того как отработает SendAnalysisAsync. или я ошиюаюсь((( А чего бы не дернуть SendAnalysisAsync прямо из браузера? Все в микросервисы играете? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 18:21 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttсмотрите -- проблема не в бд, не в сети, а именно в том, что веб-приложение не справляется с нагрузкой. какие есть варианты? Вариантов полно. Криво написанный код, операционка, криво написанный клиент, который сыпет запросами без причины. Но если в руках молоток... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 18:21 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0v, Вариант я вам озвучил, эта проблема имеет место быть. Или вы из тех, кому кажется , что все вокруг дураки, понаделали своих асинков в то время как бедная БД страдает ) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 18:38 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vhVosttсмотрите -- проблема не в бд, не в сети, а именно в том, что веб-приложение не справляется с нагрузкой. какие есть варианты? Вариантов полно. Криво написанный код, операционка, криво написанный клиент, который сыпет запросами без причины. Но если в руках молоток... Таки донесите уже свою мысль :) В реальности с развитием продукта и ростом нагрузки периодически возникают различные проблемы. Абсолютно разного характера. И что? Из-за потенциальных проблем не использовать async? Не писать на Go (там вообще сплошные неблокирующие операции)? Нет. В реальности делается рефакторинг, выкатывается в режиме канарейки закрытый фичетоглами, и если что-то пошло не так, то выключаем тоглы, или откатываем пользователей на стабильную версию. Но не так, чтобы "мы ничего не будем делать, потому как а мало-ли что". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 19:30 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
skyANA Не писать на Go (там вообще сплошные неблокирующие операции)? Два кусочека колбаски, лежали на столе, ты рассказывал мне сказки, да только я не верила тебе (С) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 09:05 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttHexag0v, Вариант я вам озвучил, эта проблема имеет место быть. skyANAТаки донесите уже свою мысль :) async это замечательно, но не панацея. Мысль в том, что даже в случае 503 не обязательно сразу бежать и переписывать все на async :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 10:17 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Какая ценная мысль :) А кто-то в случае 503 сразу бежит и переписывает всё на async? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 11:31 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Дмитрий МухКакая ценная мысль :) А кто-то в случае 503 сразу бежит и переписывает всё на async? 21944001 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2019, 12:49 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vДмитрий МухКакая ценная мысль :) А кто-то в случае 503 сразу бежит и переписывает всё на async? 21944001 Л - логика.. Где там про "сразу бежит и переписывает всё на async"? "есть веб-сервер, который начинает испытывать проблемы при обработке запросов, некоторая часть пользователей начинает получать ошибку 503" "проблема ни в бд, ни в сети, а в том, что веб-приложение не справляется с нагрузкой" Варианты? "масштабировать горизонтально сервера с веб-приложением" Это быстро.. делов-то - добавить сервер в ферму.. Но сервера стоят денег, даже виртуальные, и требуют ресурсы на обслуживание.. поэтому "использование async/await позволяет довольно существенно снизить потребность в количестве серверов при масштабировании, а зачастую и в масштабировании вообще" По мне так это рационально и эффективно, а не то как вы преподносите как некую блажь бежать и переписывать всё на async. И в реальности никто и не бежит, а действительно добавляют сервера, так как быстрее и проще. При этом заводят тикеты в трекере на тюнинг самих серверов, оптимизацию узких мест, проводят нагрузочное тестирование, постепенно работают над тикетами.. Повторное тестирование.. И постепенно снижают затраты на сервера и их поддержку, повышают пропускную способность и надёжность.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 10:04 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Ещё немного дополню именно поэтому сейчас активно применяется подход async-first, т.е. пишут на async/await сразу, к этому даже подталкивает существующая архитектура платформы ASP.NET Core. чтобы потом с дуру не "бежать и переписывать всё на async" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 11:00 |
|
|
start [/forum/topic.php?all=1&fid=18&tid=1354925]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 243ms |
total: | 424ms |
0 / 0 |