Семён Коробкин
New member
Клон WeMos D1 mini, среди прочего отрабатывает код простого http сервера на ESP8266WebServer.
К нему обращается питоновский код с другого компа на линуксе, запросом GET.
Такое впечатление что на TCP пакет с запросом модуль не успевает ответить за время TCP_RTO_MIN (200 ms), и линукс шлет retransmission пакет.
Проблема в том, что модуль хоть и ACK оба пакета с запросом быстренько, но потом как-бы подвисает на 5секунд, и основной контент возвращает уже с задержкой.
При этом если тот же GET запрос делать через curl, который не вызывает retransmission (почему не знаю) то ответ модуля всегда приходит быстро, без задержек.
5 секунд это, насколько я понимаю, какой-то таймаут у TCP стека ESP8266.
Мне кажется что получение retransmission пакета запроса вводит TCP стек ESP8266 в ступор.
Нет ли у кого-то понимания, что там происходит и как бороться?
Прикладываю скриншот wireshark
PS Какая там прошивка не знаю и как посмотреть не знаю. Программирую D1 mini через Ардуино ИДЕ.
К нему обращается питоновский код с другого компа на линуксе, запросом GET.
Такое впечатление что на TCP пакет с запросом модуль не успевает ответить за время TCP_RTO_MIN (200 ms), и линукс шлет retransmission пакет.
Проблема в том, что модуль хоть и ACK оба пакета с запросом быстренько, но потом как-бы подвисает на 5секунд, и основной контент возвращает уже с задержкой.
При этом если тот же GET запрос делать через curl, который не вызывает retransmission (почему не знаю) то ответ модуля всегда приходит быстро, без задержек.
5 секунд это, насколько я понимаю, какой-то таймаут у TCP стека ESP8266.
Мне кажется что получение retransmission пакета запроса вводит TCP стек ESP8266 в ступор.
Нет ли у кого-то понимания, что там происходит и как бороться?
Прикладываю скриншот wireshark
PS Какая там прошивка не знаю и как посмотреть не знаю. Программирую D1 mini через Ардуино ИДЕ.