2011-06-29 7 views
18

この質問はサーバー指向です。 私は、カップル(4または5)のゲームをプレイし、より多くの来るとホストサーバー(かなり小さいもの、1,6Ghzの原子、2Go、200 GO)があります。これらのアプリのほとんどは本当に小さな使い方をしていますが、1日に100件のリクエストがあります。PlayFrameworkアプリケーションの最適な展開方法は?

  1. Play!の組み込みサーバーを使用してこれらのアプリケーションを展開する方がよいでしょうか。したがって、アプリケーションごとに64MBのメモリを使用しますか?

  2. またはTomcat内のすべてのアプリケーションでTomcatを展開しますか?すべてのアプリで共有されるメモリ容量は大きいですか?

EDIT:

私は私の状況について少し詳細情報を追加します。 サーバーは、ホスト:

  • について上10,15 PHPウェブサイトのApache2
  • のApacheにmod_dav_svn
  • スタンドアロンインストールソナーに使用Tomcatを介さ
  • A SVNサーバジェンキンス(桟橋経由)

私の元の計画は、これらすべてのものをTomcatにデプロイすることでした。アプリを持っていると、Sonar & JenkinsはTomcatで、Apache2は静的リソースで動作しています。 (イメージ、スクリプト)

COMMENT

最後の点は、私は、本番環境にソナー&ジェンキンス、継続的インテグレーションシステムを持つことが本当に最適ではないことを認識してね。しかし、これらは夜間にしか実行されないので(自動ビルド)、システムに過負荷を与えていません。私は学生ですが、財政的に追加の "CI /ビルド"サーバーは私の財政的能力から外れています。

答えて

13

最善のアプローチは入れて、付属のプレイサーバーを使用することですすべてのリダイレクト/要求管理に取り組むために、NGinxをその前のリバースプロキシとして使用します。

なぜこれがTomcatではないのですか?パフォーマンスを比較するthis articleから開始できます。特別な議論は、Tomcatが、Playが必要としないJava EE環境をすべて読み込むことです。あなたのアプリに自由に使いたいメモリとリソースを消費します(特にインメモリキャッシュを使用する場合)。

Nginxでリバースプロキシとして、thisは、なぜApacheの代わりにそれを使用するかについてのヒントを与えるべきです。 (質問の編集上の)

EDIT:あなたの状況で

、あなたのリソースを最適化することができます。

最初にApache 2をNginxで置き換えてください。 NginxはPHPにも対応できます(Ubuntuを使用している場合はthisを参照)。 Playは非常に効率的に機能し、Javaサーバーのプロキシとして使用できます。

その後、すべてのJavaアプリケーションをJettyに移動してTomcatを取り除くことができます。 Jettyは平均して少ないリソースしか消費しません。あなたのアプリが夜間にのみ実行されても、サーバーはまだオンラインであり、滞留しています。少ないほど良いです。

SVNについてはどうですか?残念ながら、Apache 2とNginxはApache 2のリバースプロキシとして必要になります。なぜApacheを保守しないのですか?引数は使い方です。理論的には、PHPアプリはSVNサーバーよりも多くのトラフィックを持ちます。これにより、リソース消費量がより適切になります。 nginxを使用すると、PHPを提供するためにRAMとCPUを割り当てることで、マシンのレスポンスが低下することはありません。 ApacheはあなたがSVNを使用するときにしか動作しません.SVNはそれほど頻繁ではありません。

あなたがNginx(私が理解できる)に物を動かそうと努力したくなければ、JavaアプリケーションをJettyに移動し、Apache 2をPlayのリバースプロキシとして使用するだけです。しかし、Play埋め込みサーバーを使用して、Tomcatでアプリケーションを読み込まないでください。この方法で効率的になるでしょう。

+0

興味深い。私は、リバースプロキシのために過大​​評価されているApacheを認識していましたが、ベンチマークを確認していませんでした。あなたの答えを変えるかもしれない私の状況に関するさらなる情報を追加します。 –

2

私は各アプリのプレイサーバーを起動します。設定が簡単で、別々のログファイルを持つ方が簡単です。 さらに、問題なく各アプリケーションを個別に再起動することができます。 tomcatでの再デプロイは、多くの場合、結果にエラーがあるジョブです。

短所:私が実行しているよあなたがmydomain.org/app1のような素敵なURLを取得するためにlighttpのようなリバースプロキシを設定する必要がありますし、mydomain.org/app2

+0

tomcatを使用しても、アプリケーションごとにログファイルを作成することは可能です。それは議論ではない。しかし、確かに設定/再デプロイメントは簡単です。撮影ポイント。ありがとう! –

+0

別のログファイルを持つほうが簡単です。特に、myDomain.org/myAppやmyDomain.org/myApp_betaのような状況がある場合は、同じバージョンのアプリケーションを使用することをお勧めします。 – niels

6

生産の展開は、サーバー組み込みプレイを使用しています。 2Gで

% git stash; git pull; git stash apply; play run 

:実行、私は画面の下にサーバーを実行し、アップグレードは、「上矢印」、「入力」、「Ctrlキーを押しながらC」で構成されています - それは、特に再デプロイ、Tomcatのより生活の方法が簡単になり私は、プロセスごとのオーバーヘッドについてあまり心配しません。 Tomcatの複雑さを取り除くために支払う価値があります。

(Gitのスタッシュは私が生産に転がっいくつかの非gitのコミットのconfigs持つことができます - しかし:-)、必要以上の怠惰を)

+0

私は実際に私のアプリケーションのためにこれまで同じ種類のコマンドを使用してきました。私は少し "プレイの依存関係"を追加します。 –

+0

確かに。私の "制作"アプリはまだ1.1です。 – cdegroot

関連する問題