Назад | Перейти на главную страницу

Высокая задержка возврата Rest-API на Unity

1-Иногда для выполнения запроса требуется слишком много времени. Например, простой запрос API (POST) обычно занимает 300-400 мс. Но иногда это занимает до 10 секунд, а иногда и время ожидания. Странная часть здесь заключается в том, что это даже занимает слишком много времени, что иногда при работе с локальным API и локальным клиентом иногда требуется 1 секунда для выполнения запроса. Но когда я пробую тот же почтовый запрос через Postman, я всегда получаю время отклика около 100-150 мс (в худшем случае 300 мс).

2-Иногда мы получаем «Неизвестную ошибку» из вызовов Rest API. Когда мы отслеживаем его до adb, мы видим ошибку «java.security.cert.CertPathValidatorException: якорь доверия для пути сертификации не найден». и мы время от времени получаем эту ошибку. Например; мы получаем эту ошибку, а через несколько секунд, когда отправляем еще один запрос, проблем нет.

3-У нас также есть проблемы с устройствами iPhone. Когда они пытаются отправить запрос с телом JSON размером более 25-30 КБ, сервер получает его поврежденным. Все тело JSON выглядит как мусор, и из-за этого игрок получает ошибку 400 Bad Request. Странно то, что у клиентов нет проблем с синтаксическим анализом тела JSON размером более 25-30 КБ с сервера.

Наши спецификации такие:

На сервере у нас есть Haproxy + uWSGI + Flask (мы используем Let's Encrypt для SSL). На клиентах у нас есть Unity 2019 1.4f1 + proyecto26 Rest Client (https://github.com/proyecto26/RestClient) (Который использует UnityWebRequests)

Вот статистика Haproxy для необычного запроса, который мы пытаемся решить;

Dec 10 13:58:01 localhost.localdomain haproxy[4469]: client_address = "****", path = "***", status = 200, Tr=31, Tw=0, Tc=0, Ta=31, sslVersion="TLSv1.3", Tt=4112, Td=0, Th=4081, Ti=0, Tq=4081, TR=0
Tr => response time
Tw => total time spent in the queues waiting for a connection slot.
Tc => time to establish TCP connection to server
Ta => active time of requests (from %TR to end)
Tt => total session duration time
Td => Tt – (Tq + Tw + Tc + Tr)
Th => connection handshake time (SSL, PROXY protocol)
Ti => idle time before the HTTP request
Tq => time to get the client request
Tr => time to receive the full request from first byte

Я был бы очень рад получить от вас ответ. Были ли у вас проблемы с этим вопросом или вы все равно его решили. Или я хотел бы получить от вас любую обратную связь. Хорошего дня!