javascript - ノードへの同時アクセスが期待される結果と矛盾します
怪我咯
怪我咯 2017-06-22 11:54:23
0
1
819
  • テストのロジックは比較的単純で、Node がデータベースにアクセスしてデータをクエリします。SQL ステートメントの実行時間は約 2 秒です。JMeter を使用してマルチスレッド テストを実行しました (5 スレッド) )、結果は予想どおりでした (ノードの非ブロッキング機能によると)。5 つのスレッドが同時に 2 秒で結果を返す必要がありますが、結果は次のようになります:

  • 結果によると、ノードはシリアルに実行されており、予想される結果と矛盾しています。誰か説明できますか

  • ######コード:######
  • リーリー

  • 注: 2 台の異なるマシンを使用して同じ SQL ステートメントを実行し、所要時間は 2 秒であるため、これはデータベース処理の問題ではありません。
  • 以下補足です

@Biancheng 氏によると、その理由は、複数の SQL ステートメントが同じ接続を使用しているためです。現在、コードが変更され、データベース接続プールが使用されています。実行結果は次のとおりです:

#コードは以下のように表示されます:

    リーリー
  • この結果は期待とより一致しています。5 つのスレッドが同時にクエリを実行し、すべての戻り値が 4 秒以内に返されます。圧力が増加すると、クエリ時間は自然に長くなります。テスト後、スレッド数を 2 に変更すると、戻り時間は 2 秒となり、期待どおりです。
怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(1)
某草草

時間の開始はクエリの前であり、終了はクエリの完了時であるため、それぞれの時間はクエリが実行されている時間になります。

ノードは非同期ですが、同じ接続を使用しています。接続自体をキューに入れる必要がありますか?私の知る限り、同じ接続内のほとんどのデータベースによって実行される SQL はキューに入れられ、次々に実行されます。複数の接続が並列される場合があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート