gRPC. Затраты Java обычно измеряются в мкс (суб-мс).Если вы видите задержку в миллисекундах, общие ожидания относительно того, почему:
Задержка обслуживания составляет миллисекунды.На сервере измерьте, сколько времени требуется службе для ответа.Многие сервисы обрабатывают запросы за миллисекунды.
Задержка в сети составляет миллисекунды.Запустите ping
с одного хоста на другой, чтобы получить более низкую оценку производительности связи.(netperf tcp_rr - еще лучший вариант, если у вас есть такой интерес.)
В тесте не было прогрева JVM.Самый первый RPC будет очень и очень медленным, поскольку происходит загрузка классов.После этого JVM будет использовать интерпретированный режим некоторое время, прежде чем JIT начнет компилировать код.Затем JIT будет постепенно оптимизировать код.Поэтому убедитесь, что период прогрева 30+ секунд устойчивых RPC.
Channel
с не используются повторно.Поиск DNS, создание сетевых подключений и выполнение квитирования TLS увеличивают задержки.Но если вы повторно используете Channel
s с несколькими RPC, то более поздние RPC не должны будут оплачивать эти задержки.