#java #networking #tcp #operating-system #netty
Вопрос:
Я пытался понять кодеры фреймов Нетти. В частности, кодер с разделителями. В нескольких примерах я сталкивался с размером буфера 8192 (байт?) кажется, всплывает. Есть ли какая-то конкретная причина, по которой выбран этот размер? В качестве наилучшей практики? Можно ли его увеличить и каково будет влияние увеличения этого размера? Какой фактор следует учитывать при настройке этого размера?
Комментарии:
1. Разделитель на основе фреймедекодера используется для текстовых протоколов. 8192-это случайное число, оно может быть любым, каким вы захотите. Но, вероятно, он выбран потому, что он кратен 1024, что равно 8 тысячам. Используйте любой номер, подходящий для вашего протокола. Если накопленный ByteBuf превышает число, указанное в DelimiterBasedFrameDecoder, вы получите исключение TooLongFrameException. Это исключение будет доставлено вашему входящему обработчику
Ответ №1:
Часто само ограничение определяется протоколом, который вы реализуете. Например, SMTP может иметь другие ограничения, чем IMAP. Так что это действительно зависит от вас и протокола, который вы хотите реализовать. Наиболее важным моментом здесь является то, что должно быть ограничение, так как в противном случае было бы тривиально инициировать использование большого объема памяти в удаленной системе.