The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом на языке Rust , opennews (?), 04-Фев-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


9. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Нанобот (ok), 04-Фев-21, 11:45 
С оффсайта:
hyper is a fast HTTP implementation written in and for Rust.... Blazing fast thanks to Rust.
Там ещё есть ссылка на бенчмарк, и hyper там находится на первой позиции
Ответить | Правка | Наверх | Cообщить модератору

12. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +1 +/
Сообщение от Аноним (3), 04-Фев-21, 11:47 
Ровно то же самое говорили про питоновую реализацию, а по факту это была трешовейшая pure-python имплементация. Не стоит верить всем брошуркам.
Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +5 +/
Сообщение от Аноним (35), 04-Фев-21, 13:10 
А причём тут питоновский гипер, если этот - на раст? Это совсем другой проект.
Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –2 +/
Сообщение от Аноним (3), 04-Фев-21, 15:42 
Поэтому я и спрашиваю, нет? Если с питоном всё ясно, то тут есть варианты. Хотя имя уже проклято, конечно.
Ответить | Правка | Наверх | Cообщить модератору

68. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +1 +/
Сообщение от Аноньимъ (ok), 04-Фев-21, 18:12 
Я так думаю тормозная не конкретная либа, которая может и быстрая, а весь ваш остальной питонокод.
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

76. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –2 +/
Сообщение от Аноним (3), 04-Фев-21, 19:01 
> Я так думаю тормозная не конкретная либа, которая может и быстрая, а
> весь ваш остальной питонокод.

Когда я выкинул свой верный третепень, питон оказался слишком быстрым. Правда, отказываться от сишечки я всё равно не стал, но она теперь чересчур быстрая, а вот питон в самый раз. Вот в телефоне процессор 100мгц, там тоже не очень быстро работает питон, но зато ты сразу видишь, где слишком много времени уходит.

Ответить | Правка | Наверх | Cообщить модератору

103. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 04-Фев-21, 22:59 
Ох, больше не программируй под веществами.
Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –1 +/
Сообщение от Аноним (3), 04-Фев-21, 19:02 
Кстати, погуглите, что такое профайлеры -- профилировщики, и для чего их можно применять.
Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

81. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноньимъ (ok), 04-Фев-21, 20:12 
> Кстати, погуглите, что такое профайлеры -- профилировщики, и для чего их можно
> применять.

Не держите собеседника за дурака.

Ответить | Правка | Наверх | Cообщить модератору

104. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 04-Фев-21, 23:00 
> Не держите собеседника за дурака.

Профайлить питон - весьма кошерное занятие для таковых.

Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +5 +/
Сообщение от НяшМяш (ok), 04-Фев-21, 12:00 
С hyper (и reqwest на его базе) у меня во время чисто растовых тестов возникли проблемы. Если взять асинхронную реализацию на tokio и забомбить запросами, например в 3 тысячи в секунду - то он справляется, отрабатывает быстро и не сжирает весь процессор. Но наблюдается взрывной рост памяти, которая после теста не освобождается. Например, с каких-нибудь 8 мегабайт до 600 за пару секунд.

Доковырял проблему до tokio - самый популярный асинхронный рантайм на расте как раз и течёт. Если внутри рантайма наспавнить пусть миллион пустых тасок - возникает вот такая фигня с памятью. На днях там уже фиксили одну утечку, но сами авторы говорят что потенциальных мест ещё много. https://github.com/tokio-rs/tokio/pull/3477

В принципе язык нормальный, только вот либы какие-то не очень...

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

36. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –6 +/
Сообщение от ИмяХ (?), 04-Фев-21, 13:17 
В раст не может течь память. Сам язык этого не допускает в отличие от дырявой сишечки. Это запросы у тебя какие-то неправильные.
Ответить | Правка | Наверх | Cообщить модератору

39. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (39), 04-Фев-21, 13:28 
Где об этом почитать можно? Или опять слышал звон?
Ответить | Правка | Наверх | Cообщить модератору

41. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (41), 04-Фев-21, 13:32 
где угодно может течь память, достаточно лишь ее не освобождать.
>Это запросы у тебя какие-то неправильные.

так они ж на расте

Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

51. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Растобой (?), 04-Фев-21, 14:33 
Слишком толсто.
Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

65. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –1 +/
Сообщение от псевдонимус (?), 04-Фев-21, 17:56 
Зато как есть;-)
Ответить | Правка | Наверх | Cообщить модератору

53. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +2 +/
Сообщение от nazarpc (?), 04-Фев-21, 15:32 
Rust не защищает от утечек памяти. Они менее вероятны, но сделать циклические ссылки с помощью Arc к примеру можно элементарно.
Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

88. Скрыто модератором  –6 +/
Сообщение от Dzen Python (ok), 04-Фев-21, 21:27 
Ответить | Правка | Наверх | Cообщить модератору

62. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +2 +/
Сообщение от лютый жабби__ (?), 04-Фев-21, 17:15 
>В раст не может течь память

т.к. лохи умудряются заставлять течь даже ЖАБУ, то и раст явно в кривых руках течёт ) даже если в теории не должен

Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

113. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 05-Фев-21, 00:11 
У дотнетчиков влет утекает гигазами. Хоть они с пеной у рта и доказывали обратное, но скопытившиеся сервера - штука упрямая.
Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от nazarpc (?), 04-Фев-21, 15:35 
Может быть и не утечка, а рост пула памяти в библиотеке bytes. Если не хотите потребления памяти выше определенного уровня - ограничивайте количество параллельных запросов.
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

63. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от НяшМяш (ok), 04-Фев-21, 17:17 
Я написал, что доковырял до чистого токио без сторонних библиотек (включая bytes) - течёт точно так же.

То есть достаточно такого кода для воспроизведения. Возможно пример и максимально синтетический, но это именно то поведение, которое я получаю и в "реальном" коде, когда пытаюсь натравить тот же apache benchmark на hyper сервер.


use tokio::runtime::Builder;
use tokio::time::{Duration, sleep};

fn main() {
    let runtime = Builder::new_current_thread()
        .enable_time()
        .build()
        .unwrap();

    runtime.block_on(async {
        // Пробуем наспавнить целую кучу фьючерсов
        for _ in 0..10_000_000 {
            tokio::spawn(async { () });
        }
        
        // Тут память уже 1300 мегабайт
        // Ждём 10 секунд, вдруг почистится
        sleep(Duration::from_secs(10)).await;
        
        // Всё ещё 1300 мегабайт
    });

    // Всё ещё 1300 мегабайт
    runtime.shutdown_timeout(Duration::from_secs(10));

    // Уже всё умерло и всё равно 1300 мегабайт
    std::thread::sleep(Duration::from_secs(10));
}

Я понимаю, что для спавна такого количества одновременных тасок надо много памяти. Но я ожидаю, что она рано или поздно освободится, чего не происходит. Если дёрнуть рантайм несколько раз - то память продолжает расти.

Ответить | Правка | Наверх | Cообщить модератору

145. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Анончик (?), 05-Фев-21, 09:48 
Она и освободилась. А вы наверное через ps смотрели потребление памяти процессом и решили что память занята?
Ответить | Правка | Наверх | Cообщить модератору

164. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от НяшМяш (ok), 05-Фев-21, 19:45 
А это не я так решил, а докер контейнер, который навернулся, когда в нём выжрало выделенный ему гигабайт. И по всем мониторам растёт именно RSS, а не виртуальная память.

Пока "починил" по-быстрому вызовом malloc_trim при большой нагрузке - вот он явно возвращает системе всю ненужную память.

Ответить | Правка | Наверх | Cообщить модератору

170. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –2 +/
Сообщение от Аноним (-), 06-Фев-21, 04:38 
Хренасе, почти ява с GC получилась.
Ответить | Правка | Наверх | Cообщить модератору

187. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 06-Фев-21, 16:40 
> Хренасе, почти ява с GC получилась.

Хренасе, местные "системщики" не в курсе, что такое аллокатор и какие проблемы можно поиметь под нагрузкой при неправильном выборе аллокатора или его настроек ...


Ответить | Правка | Наверх | Cообщить модератору

188. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 06-Фев-21, 20:05 
> Хренасе, местные "системщики" не в курсе, что такое аллокатор и какие проблемы
> можно поиметь под нагрузкой при неправильном выборе аллокатора или его настроек

Так поуправлять памятью вручную я и с сями могу, без таких медвежьих услуг. А, да, lwan.ws еще и с прикольным апи, позволяющим показывать GOпоте что мы тоже умеем в это. У растовиков не факт что такое клевое апи еще и есть :)


Ответить | Правка | Наверх | Cообщить модератору

195. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (195), 06-Фев-21, 21:13 
> Так поуправлять памятью вручную я и с сями могу, без таких медвежьих услуг.

Но как обычно - только в теории и в комментах.
Поэтому не в курсе, что сишники и плюсовики пишут и тюнят для высоконагруженых задач аллокаторы.

> А, да, lwan.ws еще и с прикольным апи, позволяющим показывать
> GOпоте что мы тоже умеем в это. У растовиков не факт
> что такое клевое апи еще и есть :)

Бла-бла ... когда нечего возразить, свинти с темы.

Ответить | Правка | Наверх | Cообщить модератору

205. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 11-Фев-21, 06:55 
> Поэтому не в курсе, что сишники и плюсовики пишут и тюнят для
> высоконагруженых задач аллокаторы.

В большинстве случаев и стандартного хватает. И он как-то не течет по черному. Странно.

Правда в конкретно линухе управление памятью вообще штука довольно интересная и система играет с аллокатором и программой в довольно интересную игру, в которой все несколько менее однозначно и есть ряд tunables. Но это уже совсем другая история.

> Бла-бла ... когда нечего возразить, свинти с темы.

Можно мне потроллить "экспертов" у которых как обычно случилась нестыковка обещаний с действительностью? :) Если вы не поняли, чем больше золотых гор понаобещаете, тем суровее за это потом и обтечете...

Ответить | Правка | Наверх | Cообщить модератору

207. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (-), 12-Фев-21, 19:50 
>>> "починил" по-быстрому вызовом malloc_trim при большой нагрузке
>> Поэтому не в курсе, что сишники и плюсовики пишут и тюнят для высоконагруженых задач аллокаторы.
> В большинстве случаев и стандартного хватает. И он как-то не течет по черному. Странно.

*рукалицо*
Фееричный ламеризм.
По умолчанию используется системный аллокатор
https://doc.rust-lang.org/beta/std/alloc/struct.System.html
> The default memory allocator provided by the operating system.
> This is based on malloc on Unix platforms and HeapAlloc on Windows, plus
> related functions.
> The compiler currently ships two default allocators: alloc_system and alloc_jemalloc

О чем чуть ли не прямым текстом сказали ""починил" по-быстрому вызовом malloc_trim при большой нагрузке":

> https://man7.org/linux/man-pages/man3/malloc_trim.3.html
> This function is a GNU extension.
> Since glibc 2.8 this function frees memory in all arenas and in
> all chunks with whole free pages.

Т.е. allocator в системной либе glibc не отдавал освобожденную память системе (по вашему - "тек"), а "виноват" у "экспертов" оказался раст.
  


> Можно мне потроллить "экспертов" у которых как обычно случилась нестыковка обещаний с действительностью? :) Если вы не поняли, чем больше

Бла-бла ... облажался - свинти с темы еще раз.

Ответить | Правка | Наверх | Cообщить модератору

198. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от НяшМяш (ok), 07-Фев-21, 01:00 
> Так поуправлять памятью вручную я и с сями могу, без таких медвежьих услуг.

Либы для грин тредов, веб сервера и клиента тоже самому с нуля писать, чтобы можно было "памятью поуправлять"?
> А, да, lwan.ws еще и с прикольным апи, позволяющим показывать GOпоте что мы тоже умеем в это. У растовиков не факт что такое клевое апи еще и есть :)

У растовиков есть actix вообще-то. Который в тесте techempower занимает 1-2 место. И популярный hyper. И ещё кучи чуть менее известных серверов. Но упоротые сяшники как всегда сидят в своём манямирке не высовываясь и каждый раз пукают в лужу в попытке показать свою крутость.

Ответить | Правка | К родителю #188 | Наверх | Cообщить модератору

199. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от Аноним (199), 07-Фев-21, 01:16 
>> Так поуправлять памятью вручную я и с сями могу, без таких медвежьих услуг.
> Либы для грин тредов, веб сервера и клиента тоже самому с нуля
> писать, чтобы можно было "памятью поуправлять"?

Кстати, емнип, в nginx вовсю используют свой pool allocator
https://github.com/nginx/nginx/search?q=ngx_pnalloc&type=
Похоже, там латентные "растаманы" - не чета местным комментаторам ;)

Ответить | Правка | Наверх | Cообщить модератору

180. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +1 +/
Сообщение от Анончик (?), 06-Фев-21, 07:15 
Ну вот видите malloc_trim что такое знаете. С jmalloc попробуйте оно должно работать. Эта проблема гнушного аллокатора, ее везде через malloc_trim решают лио использованием другого аллокатора.
Ответить | Правка | К родителю #164 | Наверх | Cообщить модератору

192. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  –2 +/
Сообщение от Аноним (-), 06-Фев-21, 20:21 
Что растманы лучше всего умеют делать - переводить стрелки, отмазываться и практиковать гнилой пиар. К сожалению это делает такую экосистему крайне неприятной и ламерской.
Ответить | Правка | Наверх | Cообщить модератору

197. "Выпуск утилиты curl 7.75.0 с экспериментальным HTTP-бэкендом..."  +/
Сообщение от НяшМяш (ok), 07-Фев-21, 00:53 
С jemalloc тоже течёт, но я его ещё не пробовал конфигурировать. В любом случае спасибо за совет.
Ответить | Правка | К родителю #180 | Наверх | Cообщить модератору

105. Скрыто модератором  –1 +/
Сообщение от Аноним (-), 04-Фев-21, 23:02 
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру