Вызов recv через сокет приостанавливает поток на прибл. 5 секунд

У меня есть архитектура клиент-сервер, реализованная на 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 или больше ...

Есть идеи?

С уважением

Майкл

7
задан michael 23 March 2011 в 10:55
поделиться