7

私は、Windows7でブロッキングソケットを使用してC++で実装されたクライアントサーバーアーキテクチャを使用しています。すべてが特定のレベルの負荷まで正常に実行されています。メガバイトのデータを送受信するクライアントが2つ(たとえば> 4)ある場合、1つのクライアントとの通信が約5秒間フリーズすることがあります。その場合、他のすべてのクライアントは期待どおりに機能しています。

バッファサイズは8192バイトで、サーバー側のログは次のようになります。

TimeStamp(s.ms)-受信したバイト

…</p>

1299514524.618-8192

1299514524.618-8192

1299514524.618-0004

1299514529.641-8192

1299514529.641-3744

1299514529.641-1460

1299514529.641-1460

1299514529.641-8192

…</p>

その5秒以内に読み取ることができるのは4バイトだけのようです。さらに、凍結時間は常に約5秒であることがわかりました。4秒以下、6秒以上になることはありません...

何か案は?

よろしくお願いします

マイケル

4

2 に答える 2

0

高負荷の状況でこの問題が発生しました。TCPデータの最後のパケットが最後から2番目のパケットの前に到達することがあります。これは、デフォルトのスタックがパッケージの並べ替え用に定義されていないため、この障害により、説明したものと同様の結果が得られます。

採用されたソリューションは次のとおりです。より多くのサーバーでの負荷分散

于 2011-03-23T11:13:18.040 に答える