1
  • 私は2台のまったく同じマシン(COM1-COM2)を持っており、どちらもシングルコアです。
  • 両方のマシンでcouchdbとtomcatが実行されています
  • 私のアプリケーションはRESTリクエストを介してデータベースにクエリを実行し、プロセスを高速化するために10のスレッドプールが実装されています。各スレッドには独自のデータベースインスタンスがあります。

  • スレッドプールでローカルデータベースを使用するようにアプリケーションを設定すると(warファイルはCOM1にあり、データベースはCOM1にあります)、30回のクエリに431.83ミリ秒かかります。スレッドプールなしの同じ構成では、823.83ミリ秒かかります。
  • ただし、スレッドプールでリモートデータベースを使用するように設定すると(warはCOM1にあり、データベースはCOM2にあります)、30クエリは276.52ミリ秒かかります。スレッドプールなしの同じ構成では、960.00ミリ秒かかります。

私の質問は次のとおりです。

  1. スレッドプールを使用すると、シングルコアで速度が上がるのはなぜですか?
  2. リモートデータベース構成がローカルデータベース構成よりも高速なのはなぜですか?

ありがとう

4

1 に答える 1

2

スレッドプールを使用すると、シングルコアで速度が上がるのはなぜですか?

スレッドは常にCPU上で何かをしているわけではありません。ディスク、ネットワーク、メモリなどからデータを読み取るものもあれば、その間にCPUを使用できるスレッドもあります。エスプレッソメーカーとミルクスチーマーをお持ちの場合、カプチーノの製造に2人で作業する方が、1人で作業するよりも速くなります。

リモートデータベース構成がローカルデータベース構成よりも高速なのはなぜですか?

クエリがCPUを集中的に使用する場合、2つのCPUを手元に置くことで、ネットワーク遅延の損失を補うのに十分なパフォーマンスが得られると考えられます。つまり、エスプレッソの作成に十分な時間がかかる場合は、階段を上る必要がある場合でも、次の階のエスプレッソメーカーを使用するのが理にかなっています。男が1人しかいない場合、それを行うのは意味がないことに注意してください。そのため、そのセットアップ(つまり、役に立たない階段の登り)では823msではなく960msが得られます。

于 2012-05-23T14:33:09.633 に答える