У меня есть клиент-серверная архитектура, реализованная на C ++ с блокирующими сокетами под Windows 7. Все работает хорошо до определенного уровня нагрузки.Если есть пара клиентов (например,> 4), получающих или отправляющих мегабайты данных, иногда связь с одним клиентом останавливается примерно на 5 секунд.В этом случае все остальные клиенты работают должным образом.
Размер буфера составляет 8192 байта, а запись на стороне сервера выглядит следующим образом:
TimeStamp (s.ms) - полученные байты
…
1299514524.618 - 8192
1299514524.618 - 8192
1299514524.618 - 0004
1299514529.641 - 8192
1299514529.641 - 3744
1299514529.641 - 1460
1299514529.641 - 1460
1299514529.641 - 8192
…
Похоже, что за эти 5 секунд можно прочитать только 4 байта.Кроме того, я обнаружил, что время замораживания всегда составляет около 5 секунд - никогда 4 или меньше и никогда 6 или больше ...
Есть идеи?
С уважением
Майкл