Несколько соображений:
- Я знаю, вы сказали, что вы не можете изменить «размер пакета», но использование буферизованных записей и нечастых сбросов может реально повысить производительность
- Вы можете включить jumbo frames
- Вы можете отключить Nagle
Обычно люди не хотят менять размеры своих пакетов, потому что они ожидают соответствия 1: 1 между их send () и recv (). Это не очень хорошая вещь, потому что TCP специально не гарантирует, что ваши send () и recv () будут иметь соответствие 1-1. Обычно они равны 1-1, но они не гарантируют 1012 *. Передача данных с включенным Nagle или через много переходов маршрутизатора или без включенного Path MTU Discovery делает отношение 1-1 менее вероятным.
Так что если вы используете буферизацию и каким-то образом кадрируете свои данные (EG 1: завершайте сообщения nul byte, если ваши данные иначе не могут иметь значение nul или EG 2: длина передачи в виде сетевых шортов или чего-то еще, так что вы знаете, сколько читать), вы, вероятно, убьете двух зайцев одним выстрелом - то есть получить лучшую скорость и лучшую надежность.