HTTP-запросы для приложений в реальном времени, советы по производительности - PullRequest
0 голосов
/ 12 июня 2018

Я использую Java OkHttp3 для отправки нескольких запросов POST на одну и ту же конечную точку REST, которая является сторонним сервером AWS в том же регионе, что и мой.Мне нужно, чтобы эти запросы обрабатывались как можно быстрее (даже 1 мс).

На данный момент единственные советы по производительности, которые я применяю, очень просты: я использую HTTP2, поэтому сокет подключения используется повторно, и яотправляю запросы асинхронно, чтобы он не ждал ответа до тех пор, пока не будут отправлены все запросы.

Какие еще советы следует учитывать для повышения производительности?

РЕДАКТИРОВАТЬ: В случае, если это важно по какой-либо причине, в настоящее время я передаю все параметры через URL, тело запросов пусто.Я могу передать их как часть тела, но я произвольно решил этого не делать.

1 Ответ

0 голосов
/ 13 июня 2018

OkHttp - хороший выбор для малой задержки.Netty может быть лучшим выбором для высокого параллелизма, но это не ваш вариант использования.

Возможно, вы захотите измерить, что происходит, когда вы отключаете gzip.Вам необходимо удалить заголовок запроса accept-encoding в сетевом перехватчике.С тех пор это может ускорить процесс, но только потому, что вы находитесь на быстрой ссылке.

Еще одна вещь, которую нужно исследовать, - это отключение алгоритма Нейгла .Вам нужно будет позвонить Socket.setTcpNoDelay(), что можно сделать с помощью пользовательского SocketFactory.

. Следующая версия OkHttp будет поддерживать незашифрованный HTTP / 2.Если вы согласны с этим (это почти всегда плохая идея), удаление TLS может принести вам (небольшой) выигрыш.Будьте очень осторожны здесь;текстовые сообщения - плохие новости.

...