Время отклика базовых Socket-ServerSocket

 
 
 
Сообщения:2
Решил измерить время отклика простейшего приложения на java.
С одной стороны отправляется пакет, как только другая сторона его читает, отправляет пакет первой.

Если тестировать клиент и сервер на 1 машине, то получается 1000 итераций не более чем за 50-100мс. Время отклика 0.1 мс.
Если тестировать на разных машинах, то время 1 отклика составляет не менее 300 мс, что просто огромная цифра.
Ну не может же быть базовая реализация сервера такой отстойной.

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

Это никуда не годится.
 
 
Сообщения:2428
Cardan:
Ну не может же быть базовая реализация сервера такой отстойной.

Ну если не может то ищите ошибку в том как вы меряете время. Если же в механизме замере времени ошибок не найдёте, то реализация вполне себе отстойная.
 
 
Сообщения:9664
- Если бы проблема была в сервере, то и на одной машине скорей всего медленно работало бы (для него же все равно - удаленный запрос был или локальный). Чтоб совсем исключить серверный софт - можно просто попробовать другой.
- По той же логике и механизм замера времени должен работать правильно.
- Может еще и клиент быть недонастроенным (напр, Delayed Ack)

Вообще конечно интересно как такие проблемы можно быстро диагностировать..
Изменен:13 мая 2018 09:49
 
 
Сообщения:2
Разобрался. Сокеты действительно имеют задержку (Delayed ACK).
Отключается это дело через socket.setTcpNoDelay(true).

Но почему-то про это не сказано ни в книгах, ни в множественных мануалах.
Если убрать Delayed ACK, то на домашней сети отклик равен 1-2 мс. Это более чем хорошо.
Спасибо.
Изменен:13 мая 2018 13:31
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет