Размер поддержки активности приложения TCP / IP и пропускная способность полосы пропускания - PullRequest
3 голосов
/ 15 апреля 2011

Я пишу Java-сервер (java.net.Socket, java.net.ServerSocket, java.io.ObjectOutputStream, java.io.ObjectInputStream), и я знаю, что для него будет выделена ограниченная пропускная способность.

Я написал объект-декоратор для своих потоков вывода и ввода, чтобы я мог подсчитать, сколько байтов проходит через него для целей профилирования. Но это не даст мне никаких сведений о сумме накладных расходов, которые я использую для соединения.

Не думаю, что это будет много, но я бы хотел к этому подготовиться. Я не собираюсь пытаться оптимизировать его, я просто хочу знать, сколько это будет по логистическим причинам (какую пропускную способность я должен запрашивать и т. Д.)

Я не могу быть первым, кто попытается получить эту информацию, но я не могу найти хорошие ресурсы на издержках Java Sockets и TCP / IP в целом. (Возможно, это потому, что ничего примечательного не найти ... Если мы находимся на уровне порядка килобайта в минуту, это действительно не большая проблема, но я все еще хотел бы знать!)

Спасибо!

Ответы [ 2 ]

5 голосов
/ 15 апреля 2011

На этот вопрос сложно ответить информацией, которой мы располагаем сейчас ... например, что вы называете «накладными расходами»?Это только пакеты TCP ACK или все служебные данные пакетов (например, заголовки ethernet, IP и tcp) для чего-либо кроме полезной нагрузки данных?

Сколько соединений в минуту?Какова средняя скорость передачи данных на соединение?Если существует много очень коротких соединений, ваши требования к накладным расходам возрастают (из-за трехстороннего рукопожатия и требований к закрытию соединения) ... вы также можете иметь высокие накладные расходы, если клиенты не читают много данных, но много клиентовДержите соединения открытыми в течение нескольких дней за раз.

Честно говоря, вам в 50 раз лучше смоделировать это в лаборатории и сделать некоторые предположения о частоте попаданий в минуту и ​​одновременных клиентах ... что даст вам некоторую приблизительную оценкуномера.Поэкспериментируйте с ограничением полосы пропускания, предоставленной приложению, до максимально допустимого вашим бюджетом ... затем начните отступать ... вы можете регулировать пропускную способность, используя wanem на двухпортовой машине Linux.

Подобные результаты лабораторных исследований намного лучше, чем теоретические расчеты.

HTH, \ mike (который проводит весь день, проверяя сетевое оборудование)

4 голосов
/ 15 апреля 2011

Издержки TCP варьируются в зависимости от ряда факторов, но обычно составляют около 5% при полной емкости.

Обычно каждый «пакет» имеет 20 байтов заголовка IP (и еще 20, если IPv6) плюс 20-32 байта заголовка TCP. Размеры пакетов зависят от сетевых устройств и условий, но часто составляют около 1500 байт.

На этой странице есть некоторые детали: http://sd.wareonearth.com/~phil/net/overhead/

По моему мнению, вы можете полностью игнорировать keep-alive, так как они все равно используются только в том случае, если соединение не используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...