У нас есть настройки с Windows Server и клиентами iOS, Windows и Android.Только на клиентах Android у нас проблема с отправкой запросов с огромными задержками (до нескольких секунд), даже если установлена опция NoDelay.
Я написал тестовое приложение для Android с Qt / C ++, чтобы я могнапрямую используйте posix api для создания сокета и вручную соедините наши вызовы rpc (этот проект использует thrift).Это позволило мне сузить реальную проблему.Я запускаю вызов RPC один раз в секунду, но на устройствах Android данные просто не часто сбрасываются.То есть я получаю ответ, скажем, через две-пять секунд.
Очевидно, что я сбросил сетевой трафик на сервере с помощью Wireshark. .
Глядя на него, мы легко видим повторяющийся вызов и случайную задержку в 3 секунды.вместо ожидаемого между входом 90 и 92. На мой взгляд, похоже, что планшет не очищает буфер.(Тем более, что в соответствии с нашим QA эта проблема не возникает с клиентами Windows и iOS.) Возможно, также важно то, что на разных устройствах Android частота этих таймаутов сильно отличается.Пиксельные устройства довольно хороши и почти никогда не показывают такого поведения, в то время как на Galaxy Tab S3, который я имею перед собой, эта проблема возникает несколько раз в минуту.
Есть ли что-то, что я пропустил при настройке параметров сокета tcpили у вас есть какие-либо дальнейшие предложения о том, что я мог бы попробовать?
С наилучшими пожеланиями, Майкл
Обновление 27.05.2019: я рутировал планшет и также использовал анализатор Wi-Fi.На планшете пакет / рамка "отправлено", но сниффер wifi его не нашел.Это означает, что это может быть проблема в драйвере или роме планшета?