Tomcat 7のパフォーマンスを調整しています。サーバーには、24コアと32 GBのメモリが搭載されています。テストインターフェイスは、プロセスなしのRESTfulサービス(すぐに応答)であり、server.xmlの構成は次のとおりです...
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
enableLookups="false"
compression="off"
maxConnections="8192"
maxThreads="1000"
tcpNoDelay="true"/>
およびJVM構成...
-Xms8192M -Xmx16384M.
JMeterのホストは、上記のサーバーと同じ仕様の別のコンピューターです。そして、JMeterヒープの構成は-Xms12218m -Xmx24426m
。
私のJMeterテスト計画では、240個のリクエストがRESTfulインターフェイスに一度に同時に送信されますが、最初の100の平均応答時間は50ミリ秒以下ですが、次の100では1秒、次の100では3秒に増加します。残りのために。
そのような現象に興味がありますが、構成に間違いや提案はありますか?
前もって感謝します。
あなたは設定することができます:
acceptCount="2048"
そして
maxConnections="1024"
MaxConnectionsはmaxThreadsと関係があり、maxThreadsをビジネスとCPUのコア番号(8Xや16Xなど)に一致するように構成する必要があります。 acceptCountは、待機中の接続番号です。
MaxConnectionsとmaxThreadsは、サーバーハードウェアのパフォーマンスとともに、大きくならないほど良いわけではないことに注意してください。
サーバーが処理する必要のある要求が多いほど、各要求の処理にかかる時間が長くなります。これは正常な動作です。
スレッドを同時にどのように開始していますか?ランプ時間= 0または1?
大量のスレッドを起動し始めると、クライアントはリクエストを行うのに時間がかかり、サーバーは応答するのに時間がかかります。
起動時に、サーバーはしきい値に達するまで他に何もすることがないため、すべての要求に非常に迅速に応答できます。これらの各リクエストはすぐに終了し、同じスレッドが別のリクエストを送信します。その間、サーバーは前のスレッドの波に応答し、さらに多くのスレッドがキューに入れられます。これで、要求に応答しながらキューを管理する必要があるため、別のしきい値が満たされます。
基本的に、一連のスレッドを開始してリクエストを同時に起動することは、いくつかの場合を除いて、サーバーのあまり現実的なユースケースではありません。関連性がある場合は、この動作を期待できます。