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

Ребят, Вопрос про netty Точнее про обработку данных и хранения к

подключению

Вот есть клиент, он подключился к серверу и 23 на 7 отправляет данные, может по сотни раз переподключаться.

Данные его обрабатываются в том же потоке обработки netty. Как я понял по примерам, то норма обрабатывать логику, сохранять в бд и отпралвять ответ клиенту прям в этих потоках, если ничего не блокируется. Или нет?

Волнуюсь за производительность. Есть желание вынести обработку в свой ExecutorService, или вообще в реактивщину запихнуть

Так же на серверах просидает память. Именно в ОС, на линуске. При перезапуске сервиса не освобождается память. Может ли это быть связано с netty, то что у него данные хранятся вне стека джавы? Как исправить это, хотя бы сменить место хранения байт? Гугление не даёт точных ответов

И нормально ли в "трубе" нети на каждое соединение создавать кодировщики и декодировщики + обработчик пакектов на соединение?

И да, обработчик пакетов соединения хранит данные о клиенте, это норма?

Что-то кажется, что где-то я не понимаю. Как найти информацию по этому - не знаю

Изучать сам исходник netty - последнее, что буду делать, пока ищу инфу на просторах рунета и чатах

8 ответов

26 просмотров

Ключевой аспект работы с нетти - это не блокировать поток(и) event loop-а. Т.е. условно вы вычитываете сообщение и сразу кидаете его на асинхронную обработку - через blocking queue какую-нибудь или через executor. И там уже делаете с ним что нужно - в бд сохраняете или ещё как-то обрабатываете.

Владимир-/ WDeath Автор вопроса
Sergey Yezhov
Ключевой аспект работы с нетти - это не блокироват...

Это если клиентам не хватает потоков обрабытваться. У нас пока проблема в том, что память оперативная куда-то уходит

Голый нетти для обучения используется?

Если у вас память течёт, можно посмотреть, сколько ByteBuf/ByteBuffer лежит в хипе. Нетти их обычно переиспользует (то есть они лежат в пуле), и если их не отпускать явно, так оно и будет.

Если там что-то жрет память помимо твоего сервиса, то ты можешь увидеть это в top. Там буквально пару клавиш нажать, чтобы выбрать по какой колонке сортировать.

>И нормально ли в "трубе" нети на каждое соединение создавать кодировщики и декодировщики + обработчик пакектов на соединение? Можете проаннотировать через Sharable, чтобы не создавались

Владимир-/ WDeath Автор вопроса
Etki
Если там что-то жрет память помимо твоего сервиса,...

Так при перезапуске сервисов память не освобождается 😅

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта