27

Java で SMS アプリケーションを開発しています。私のクライアントは、SMS 経由でクエリを送信します。クエリは、SMS ゲートウェイを介して http 要求の形式でサーバーに転送されます。これで、アプリは要求を処理し、SMS ゲートウェイを介してクライアントに応答を再度送り返します。最大 300 文字のみが応答として送信されます。非常に高いトラフィック (2000 リクエスト/秒) が予想されます。私は自分のアプリケーションをウェブホスティング会社 (mochahost を検討中) でホストしたいと考えていました。ホスティングの前に考慮すべき要素 (RAM、CPU など) と、主なボトルネックは何ですか? 専用の tomcat サーバーは、適切に調整されていれば、このような大量のトラフィックを処理できますか? あなたの提案は何ですか?

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

4

3 に答える 3

32

サーブレットで何をしているのかを知らずに質問に答えることは困難です。しかし、端的に言えば、Tomcat とは何の関係もないということです。

現在、Tomcat サーバーには Dell R410 (デュアル クアッド コア、32G RAM) を使用しています。バックエンドで membase クラスターと通信する REST サービスの場合、1 つのサーバーで最大 15,000 リクエスト/秒を簡単に処理できます (これは Jersey JAX-RS 実装を使用しています)。現在、F5 ロード バランサーの背後にこれらの 4 つがあります。これらの各リクエストは、平均で約 10 ミリ秒で処理されます。

結局のところ、同時実行性です。サーブレットがリクエストに対して必要な処理を行うのにかかる時間。同時リクエストごとに 1 つのスレッドが実行されるため、1 秒あたり 2000 リクエストを処理しようとしていて、1 つのリクエストの処理に 500 ミリ秒かかる場合は、少しハードウェアが必要になります。問題は tomcat ではなく、サーブレットで使用できるリソースの 1 つです。

于 2011-08-25T16:57:13.273 に答える
7

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

于 2011-08-25T18:29:58.330 に答える
1

クラスター/負荷分散アプローチを実装する必要があるようです。例としてこれを見てください。

于 2011-08-25T15:30:52.707 に答える