0

これは一般的な質問です。サーバーに同時実行の問題があるとします。クライアントは、問題をトリガーするために同時に複数の要求を送信できます。次に、問題をより頻繁に発生させるにはどうすればよいですか?

  1. クライアントは、同時により多くのリクエストを送信できるほど高速である必要があります

  2. サーバーは十分に高速である必要があります

問題の再現に役立ちますか? それともその逆ですか?サーバーが遅い必要がありますか?

編集 1: 競合状態の同時実行の問題だと思います。複数のスレッドが同じオブジェクトを使用していますが、そのオブジェクトはスレッド セーフではありません。

私の主な懸念は、クライアントが毎秒一定量のリクエストを送信する場合、より高速なサーバーまたは低速なサーバーで問題を再現するのは簡単でしょうか?

4

2 に答える 2

0

問題をさらに発生させたい場合は、より多くのアクティブなクライアントを同時に取得するか、クライアントに自動ループを使用させて、問題の原因となる API コマンドを送信させます。

問題が発生した理由を特定できるように、問題を発生させたいと思いますか?

于 2012-07-18T19:28:27.493 に答える
0

ロック競合の同時実行の問題について話している場合は、高速 (または複数) のクライアントと低速のサーバーと言えます。ロックに費やす時間が長いほど、より良い結果が得られます。

高レベルのランダム性が必要なときに競合状態について話している場合-異なるサーバーパフォーマンスレベル。サーバー上の多数の接続もこれに役立ちますが、さまざまな異なるサーバー負荷を試す必要があります. 並行性を保証するためにいくつかのクライアントから始めてから、サーバーがフラッディングするまでスループットを増やします。

私が疑うあなたの問題を再現するのは、うまくいかないでしょう。System.out同期されたパターンが変更されるため、メッセージの追加またはロギングには注意してください。

編集:

スレッドセーフではないオブジェクトでの読み取り/書き込み競合状態について話している場合は、できるだけ多くの異なるパフォーマンス レベルが必要であると言えます。競合状態とは、スレッド タイム スライスが終了してスレッドがスワップ アウトされるタイミング、キャッシュされたメモリ フラッシュのタイミング、ライター スレッドの実行と同時に他のスレッドが実行されるタイミング、および操作の順序に関するものです。

繰り返しますが、サーバーがさまざまな程度の負荷でヒットするように、クライアントの開始が遅くなり、その後ビルドアップするようにクライアントを作成します。

于 2012-07-18T19:31:04.220 に答える