У меня есть архитектура клиент-сервер, реализованная на C ++ с блокировкой сокетов под Windows 7. Все работает хорошо до определенного уровня нагрузки. Если несколько клиентов (например,> 4) получают или отправляют мегабайты данных, иногда связь с одним клиентом останавливается примерно на 5 секунд. В этом случае все остальные клиенты работают должным образом.
Размер буфера составляет 8192 байта, а запись в журнал на стороне сервера выглядит следующим образом:
TimeStamp (s. мс) - полученные байты
…
1299514524,618 - 8192
1299514524,618 - 8192
1299514524,618 - 0004
1299514529,641 - 8192
129951451441601
1299514514416014 - 37445,641] 12295,641 [122951451461014 - 37445,61] 1460
1299514529.641 - 8192
…
Кажется, что за эти 5 секунд можно прочитать только 4 байта. Более того, я узнал, что время замораживания всегда составляет около 5 секунд - никогда не 4 или меньше и никогда 6 или больше ...
Есть идеи?
С уважением
Майкл