2011-08-25 12 views
20

私はJavaでSMSアプリケーションを開発しています。私のクライアントは、SMS経由でクエリを送信します。このクエリは、SMS Gateway経由でHTTPリクエストの形式でサーバーに転送されます。これで私のアプリケーションはリクエストを処理し、SMSゲートウェイを介してクライアントに返信を再度送り返します。応答として最大300文字しか送信されません。私は非常に高いトラフィック(2000要求/秒)を期待しています。私はいくつかのウェブホスティング会社(mochahostを考慮)と私のアプリケーションをホストしたかったのです。ホスティングする前にどのような要素を考慮する必要がありますか(RAM、CPUなどのインターミッション)、そして大きなボトルネックとなるものは何ですか?専用のTomcatサーバーが適切に調整されていれば、そのような高いトラフィックを処理できますか?あなたの提案は何ですか?tomcatで2000+リクエスト/秒を処​​理する方法は?

データベースの操作はありません(Javaヒープメモリのみを使用しています)。私はJMeter(100リクエスト/秒)でテストを実行しました。私のヒープメモリの使用量は35MBで、平均応答時間は532msでした。また、私はセッション変数を使用していません。

+0

各リクエストにはどのような処理が必要ですか?どのデータベースのやり取りですか? –

+0

@Mikeデータベースのやりとりは全くありません。私はJavaメモリだけを使用しています。 – ravi

+0

私はjmeter(100要求/秒)でテストを実行しました。私のヒープメモリ使用量は35MBで、平均応答時間は532msでした。 – ravi

答えて

23

あなたのサーブレットでを実行していることを知らずに質問に答えることは難しいです。しかし、短い答えは、それは本当に何もtomcatとは関係がないということです。

現在、当社のTomcatサーバー用のDell R410s(デュアルクアッドコア、32Gラム)を使用しています。バックエンドのmembaseクラスタと通信するRESTサービスでは、1つのサーバ(これはJersey JAX-RS実装を使用しています)で〜15k req /秒を簡単に処理できます。現在、これらのうち4つがF5ロードバランサの背後にあります。これらの要求のそれぞれは、平均約10msでサービスされます。

実際には、並行処理が行われます。リクエストで何をする必要があるかをサーブレットが取るのにどれくらいの時間がかかります。同時リクエストごとにスレッドがあるので、2000 req/secにしようとすると、1回のリクエストで500ミリ秒かかります。ハードウェアが少し必要です。この問題はTomcatではなく、サーブレットで利用できるリソースの1つです。

+1

私はあなたの記事に関してこのスレッドを開始しました:http://stackoverflow.com/questions/7970803/tomcat-doing-15k-req-second-on-a-single-server-using-jersey-jax-rsあなたがチャイムできることを望みます – codecompleting

+0

あなたはTIME_WAITのOSレベルで何かを微調整しましたか?どのようなtomcat設定の設定について:connectionTimeout、keepAliveTimeout、maxKeepAliveRequests。一秒あたり2Kリクエストの類似したアプリを持っているが、しばらくすると風が揺れている。 – codecompleting

+0

私はこの答えが好きです – thonnor

1

クラスタ/ロードバランシングのアプローチを実装する必要があるようです。例としてthisを見てください。

6

ハードウェアのデフォルト設定を持つ単一のTomcatサーバーでは、リクエストあたりの処理量があまり多くないため、毎秒2kリクエストを簡単に処理できます。 1つのリクエストを処理するのに500ミリ秒かかる場合は、おそらくスレッドプール内のスレッド数を増やす必要があり、制限を押し始める可能性があります。また、その作業の一部を他のスレッドにオフロードすることができれば、応答時間が短縮され、デフォルトの200スレッドを維持できます。次に、あなたのワーカースレッドが着信要求に追いつくことができるかどうかという問題です。これは、負荷が一定であるかバースト的であるか、そして処理にどれくらいの遅延を受け入れるかによって異なります。これは、HA、DR、およびあなたの受け入れ可能なダウンタイムが何であるかには対処しません。それはすべて大きなバランスの取れた行為であり、あまりにも多くの変数があり、ちょっとした解答を与えるだけです。

関連する問題