У нас есть сервер apache, на котором хранятся файлы прошивки для некоторых встроенных устройств. Эти файлы не очень большие, всего около 160 Кб. Встроенные устройства используют мобильное соединение EDGE для подключения к этому серверу и загрузки обновления при необходимости. Проблема, с которой мы сталкиваемся, заключается в том, что в некоторых из этих устройств есть программная ошибка, которая вызывает большие потери пакетов. Если сетевое соединение действительно хорошее, устройствам удастся загрузить файл и выполнить обновление. Проблема в том, что в большинстве случаев этого не происходит.
Я не думаю, что потеря пакетов вызвана сетью, потому что загрузка всегда начинается хорошо. Примерно через 4 КБ, когда устройство начинает записывать данные во флеш-память, соединение замедляется до сканирования и никогда не восстанавливается. Обычно это замедление должно быть временным, после сохранения данных скорость загрузки должна улучшиться.
Глядя на сетевой трафик, пакеты все еще отправляются обеими сторонами, но есть потери, и сервер просто тратит большую часть времени на ожидание подтверждения.
Мне было интересно, есть ли способ заставить сервер чаще пересылать пакеты. Я пробовал изменить контроль перегрузки TCP на Westwood, но это не помогает. Есть ли какие-нибудь настройки на веб-сервере (любом веб-сервере), которые могли бы это сделать? Или, может быть, способ написать для этой цели свой? Это временное решение, пока мы не обновим глючные устройства.