Первый запрос на модификацию занимает точное время ожидания OkHttpClient - PullRequest
0 голосов
/ 25 сентября 2018

Я использую Retrofit и OkHttpClient для создания Rest API на Android.

Некоторое время назад я заметил, что самый первый запрос, выполняемый API, всегда обрабатывается дольше, чем все остальные ...В начале мне было все равно, потому что это было приемлемое время.

Но внезапно время запроса подскочило до 60 СЕКУНД

Все это время является пустой тратой на стороне клиента, так как мониторинг сервера я вижучто время обработки занимает менее 1 секунды ...

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

Я изменил значение с 10 секунд до 60 секунд только для тестирования ...

Я провел несколько экспериментов, устанавливая connectTimeout для многих других значений, и ВСЕГДА первый запрос занимает время, превышающее время ожидания

Кто-нибудь знает, что может вызвать это странное поведение?как это решить?

PS.Мне нужно было проверить API на рабочем столе, и эта проблема не возникала, я имею в виду, что это происходит только на устройствах Android [я пробовал несколько] в чем причина?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace

Вероятно, сбой при первых нескольких запросах и истечении времени ожидания.OkHTTP автоматически повторяет попытку.

builder.retryOnConnectionFailure (false);

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

https://www.reddit.com/r/gfycat/comments/5y2dkm/psa_for_android_devs_how_to_work_around_ipv6/

Вероятно, ipv4против проблемы с ipv6.Этот код устанавливает приоритет адресов IPv4.

0 голосов
/ 26 сентября 2018

Вы можете настроить EventListener в вашем OkHttpClient и использовать его, чтобы увидеть, как тратится время.

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