私はElastic Beanstalkを使用してAmazon AWSにデプロイする予定のJavaサーブレットを作成しています。私のテストでは、Beanstalkが使用する在庫Tomcat AMIを使用してSmall EC2インスタンスを使用するとうまくいくことがわかりました。EC2インスタンス上でTomcatのJavaヒープを割り当てる
私はこの設定に適切にJavaヒープスペースを割り当てる方法を理解しようとしています。 Smallインスタンスは1.7GBのメモリを持っているので、1024MBのヒープがうまくいくと思っています。私は、このインスタンスの唯一の "本当の"目的がTomcatを実行することであっても、他のものにはメモリが必要であることを認識しています。また、標準的なSun/Oracle JVMが実際には機能しない大きなヒープのある点があることも知っています。
これはメモリを割り当てるうえで妥当な方法ですか?私は多かれ少なかれ使うべきですか?どのようなツールを使って最適な構成を決定できますか?
入力いただきありがとうございます。 私のアプリについて詳しくは触れません。これにより、ユーザーはさまざまなトピックに関する情報を表示し、可能であれば情報を追加することができます。トピックに関する情報の一部はデータベースから動的に生成されますが、その大部分は起動時にファイルから読み込み、ヒープ上の独自のデータ構造で保持される静的データです。すべて一緒に、それは約250から300 MB相当のデータです。私たちが本当に走ったら、1日に数万人のユーザーがいるだろうと推測しています。 –
私の以前のAWSプロジェクトでは、すべてを制御しようとしました。このプロジェクトでは、「本物の」アプリケーションにもっと時間を費やす必要があると判断し、単純なITジョブではなくそれを販売する方法を決めたので、在庫Beanstalkを使用しています。これは、Linuxの在庫AMIとElastic Load Balancerを使用することを意味します。 ELBの代わりにmod_jkを使って負荷を分散させる理由がありますか? これを考えれば、なぜ1024はあまりにも多すぎると思いますか?実際には標準のオペレーティングシステムのタスク以外は何もありません。これを正しく見ていますか? –
@SanderSmith私はまだELBを使用していますが、私はこれを使って2つの小さなapache Webサーバーインスタンスのバランスをとっています。次にmod_jkは私のApache Webサーバーインスタンスから、Tomcatインスタンスに負荷を分散するために使用されます。 Apacheは静的なリソースを提供する上で優れており、SSLをより良く扱うことができます。あなたができる最良のことはテスト負荷であり、そこからあなたの決定を下すことだと思います。あなたのアプリケーションが1日に10kユーザーを受け取ることを期待している場合、JVMをどのようにチューニングしても、小さなEC2インスタンスでは十分ではないと思います –