2016-11-04 5 views
-1

私は同時にリクエストを行い、テストをしていて、 '並行性レベル'を引き上げたいと思っていましたが、メインスレッドでは利用できないことがわかりました。 10000回の要求と50同時実行して、私は実行apachebenchテストをやっ例えばSpring MVC/Java/Springブート/ etcで要求の並行性をどのようにして確認できますか?

、:

ab -c 50 -n 10000 -H "Content-Type: application/json" http://localhost:8080/v0.1/post/show/1" 

...または包囲と同じレベル...

siege -b -c 50 -n 10000 -t120S http://localhost:8080/v0.1/post/show/1 

そのうちだろう私は春のサーブレットでそれを見つけるのですか?それとも私はそれをどのように構築しますか?

+0

リクエストスレッドの数は、サーブレットではなくコンテナ(たとえばtomcat)で設定されていますまたは春に。 https://tomcat.apache.org/tomcat-8.0-doc/config/executor.html –

+0

はい、これはサーブレットに処理されるように渡されます。それ以外の場合、非同期処理は不可能です。したがって、1つ以上のリクエストであるかどうかを検出し、カウントを取得し、必要に応じて非同期処理を開始する必要があります。 – Orubel

答えて

0

だから、ここ仮定の多くが、私はdocsと、このreferenceを参照してくださいお勧めします(あなたが非ブロックので、サーブレットがAsyncTaskExecutorのいくつかのインスタンスを持っている必要があることを疑う - 関連する部分はここにある:

Spring MVCでは、SimpleAsyncTaskExecutorを使用してコントローラメソッドから返されたCallableインスタンスを実行しますが、本番環境では、環境に合わせてAsyncTaskExecutorの実装を置き換える必要があります。 RequestMappingHandlerAdapterを直接設定することもできます。

したがって、AsyncTaskExecutor実装にアクセスすると(あなたのロガー/ mbeanへの注入によって)、あなたが探しているAPIが得られるかもしれません。 getConcurrencyLimit()またはgetActiveCount())。これはあなたのAsyncTaskExecutorがおそらくあなたの環境に固有のものであることを考えれば変わります。

+0

ええ、ReactorをthreadPoolExecutorで使用してください。ドキュメントをチェックアウトしても問題は残っています。カウントを取得するためにフィルタで非同期の「taskexecutor」を実行する必要がありますか?ここでは、同時リクエスト数を取得します。数多くのことを試みたが、何も動作していないようだ。 – Orubel

関連する問題