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

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

подключению

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

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

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

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

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

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

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

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

8 ответов

11 просмотров

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

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

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

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

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

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

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

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

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

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

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

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Только такой if ($modx->event->name == 'OnBeforeCartItemAdding') { $meta = $params['item']['meta']; $lang = $modx->getConfig('_lang'); // проверяем, задана ли опция i...
Multi Web
1
Всем привет. Испытываю проблемы в работе БД, а именно огромного роста логов, такого характера: 024-05-16 18:39:07 +05 sentry sentry [unknown] 1050169 7-1 app-sentry01.corp.ru>...
Alexey
2
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Если подытожить: По мнению Розыча и Хемуля и др. - предпочтительно по возможности объявлять в секции имплементации потому-что: 1) Выше скорость компиляции 2) Не замусоривается...
notme
7
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
В дельфе нет никакого коробочного (без установки третьих либ) способа получить CallStack с расшифровкой отладочных символов?
notme
7
Карта сайта