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

Уменьшить буфер отправки TCP

У меня есть сервер Windows 2008 R2, приложение постоянно опрашивает другой сервер (используя Flash Socket), ожидая определенного события на этом сервере. Речь идет о миллисекундах. Когда принимающий сервер отстает, его окно приема TCP заполняется запросами на опрос, и мой сервер перестает отправлять что-либо, но продолжает генерировать запросы. Полагаю, они хранятся в каком-то сетевом буфере отправки. Когда я получаю ACK от принимающего сервера, все ожидающие запросы на опрос отправляются сразу в виде огромного пакета, который перегружает получателя, и все повторяется снова. Я хочу равномерно распределять запросы по времени.

Я почти не влияю на программное обеспечение, генерирующее запросы. Как я могу уменьшить буфер отправки, чтобы убедиться, что на другой сервер не отправляются большие блоки данных, когда он отстает? Меня устраивают любые хаки или глобальные настройки. В окне конфигурации моей сетевой карты я могу изменить настройку «Буферы передачи», поможет ли это?

На самом деле это не сработает - данные не накапливаются на отправителе, они накапливаются на получателе, будучи полученными сокетом TCP и ожидая, пока приложение их заберет, поэтому уменьшение окна отправки выиграло. т помочь. (Работа с этим буфером может сместить pileup, но эти настройки являются общесистемными, и вам придется вручную разрезать окно в 4 местах - неприятный подход.)

У вас нет контроля над отправляющим приложением, как насчет принимающего приложения? Может ли он отбрасывать все запросы на опрос, если запрос на опрос уже был получен в течение последних X секунд?