Какие факторы влияют на производительность сети в JAVA (вариант использования HttpURLConnection) - PullRequest
0 голосов
/ 18 февраля 2020

Я занимаюсь разработкой кандидата, который, по сути, нуждается в высокой оптимизации сети и особенно в соединениях HTTP (я использую JAVA 'HttpUrlConnection), для этого я хочу знать, какие методы должны использоваться. В любом случае у меня есть несколько точных вопросов:

  • Постоянство соединения: я задаю (Свойства системы) 'http.maxConnections: 21' и 'sun. net .http.errorstream.bufferSize: 10240 ', увеличение этих значений улучшает характеристики? (Приложение выполняет много запросов к одному и тому же веб-сайту, оно может одновременно достигать 30 активных соединений (многопоточных))

  • Постоянство соединения: означает ли сохранение использование предыдущих заголовков? или только установленный канал TCP?

  • можно ли адаптировать HttpURLConnection для использования Http / 2? Это улучшает производительность? (Я читал, что Http / 2 использует мультиплексирование, которое кажется лучшим механизмом)

  • Работает ли постоянство соединения и через прокси? (Я полагаю, из app-> proxy YES, но от proxy-> server это зависит от того, поддерживает ли прокси-сервер постоянство соединения) Заголовки / инструменты, которые я могу использовать для улучшения использования сети (моя цель - подключить и отправить / получить данные на сервер как можно быстрее);

    Что я пробовал:

    • Используйте приложение в RDP рядом с целевым сервером (для уменьшения географического расстояния и, следовательно, точек маршрутизации / коммутации);

    • Используйте параллельное соединение, отправляя один и тот же запрос много раз для каждого потока, но я считаю, что это не очень хорошая практика;

    • Уменьшить размер (количество) заголовков (в том числе длины пользовательского агента) и данных, отправляемых на сервер;
    • Использовать другие API: HttpClient (чья производительность явно ниже, чем HttpUrlConnection) и Jsoup, чья производительность была лучше, чем у HU C (странно! C, но я буду не использовать его, потому что он поддерживается HU C, и должно быть другое объяснение разницы в скорости;
    • , использующее IP напрямую, чтобы избежать поиска DNS, но это выгодно только в первом запросе;
    • Пробовал соединение с высокой пропускной способностью (экземпляр Amazon с сетевым экземпляром до 15 Гб), может быть, оптоволоконная сеть была бы лучшим выбором ?? Я проверю это;
    • Причина, по которой я хочу найти лучший способ оптимизации сети, заключается в том, что даже при JAVA подключении приложения к веб-сайту (поэтому нет запроса XHR, JS выполнение или Выполнено извлечение файлов css / img / js) между подключением к браузеру нет особой разницы (с xhr, js, css ....), особенно когда в этом подключается много клиентов в большинстве случаев браузер загружается быстрее, чем браузер! (но я не тестировал его с сохранением соединения, но без него браузер лучше!)

    nb. Я в основном общаюсь с серверами двух типов: Microsoft-IIS / 8.5 и Apache за Amazon Load Balancer, поэтому, если у вас есть рекомендации, относящиеся к этим двум типам, это поможет мне, как общие рекомендации.

    Заранее спасибо!

...