Агрегирование данных на Netty HTTP / 2 под нагрузкой - PullRequest
0 голосов
/ 09 мая 2020

Мы пытаемся использовать NETTY для HTTP / 2 трафик c от клиента к серверу. Размер данных, отправляемых от клиента на сервер, составляет примерно 1,3 КБ (он варьируется, но ограничен 1,3 КБ).

Это строка CSV с некоторыми заголовками.

Проблема, с которой мы сталкиваемся, заключается в том, что HTTP / 2 разбивает содержимое на несколько кадров, на стороне сервера мы получаем несколько фрагментов для одной и той же записи. Для агрегирования на стороне сервера нам необходимо сохранить идентификатор потока и соответствующие данные в некоторой карте, а затем дождаться окончания потока в последующих пакетах, чтобы добавить данные и, наконец, получить обратно полный CSV.

Это увеличивает объем памяти на стороне сервера, и при нагрузке даже 30К просто не работает.

Через некоторое время сервер зависает и клиент перестает отправлять запрос.

Есть ли способ, с помощью которого я могу эффективно агрегировать данные на стороне сервера или лучше, гарантировать, что данные, полученные в OnDataRead (), действительно полные, чтобы я мог вызвать свой бизнес-лог c и освободить netty.

...