web-dev-qa-db-ja.com

nginxを排他的に使用する必要がありますか、それともTomcat(パフォーマンス関連)のプロキシとして使用する必要がありますか?

動的コンテンツにかなり重点を置くWebサイトを作成することを計画しており、Webスタックの一部として最も賢明な選択は何かを知りたいと思っています。

現在、PHPを使用して動的コンテンツを配信するか、nginxをTomcatのプロキシとして使用し、サーブレットを使用して動的コンテンツを配信するかを決定しようとしています。

私はJava、JSP、サーブレットの経験が豊富なので、すぐにプラスになります。また、コンパイル言語であるため、PHP(暗黙的に ここ そのJavaは約37xです)よりも高速に実行されますPHPよりも高速)、Webページを作成高速にします。

PHPの経験はありませんが、簡単に手に入るという印象を受けています。 Javaより遅いですが、クライアントはnginxとしか通信しないので、動的に作成されたWebページをクライアントにservingすることになると思いますこの方法でより速く。

これらのことを考慮して、私は知りたいです:

  1. 私の仮定は正しいですか?
  2. ボトルネックはどこで発生しますか:ページを作成するか、クライアントに提供しますか?
  3. Tomcatを使用して動的コンテンツを生成する場合(この点でサイトが重くなることに注意してください)、Tomcatをnginxでプロキシすると、nginxのパフォーマンス上の利点が得られますか?

PHP最終的に、最高のパフォーマンスが得られるのであれば、学習してもかまいません。その観点から、何が最良の選択であるかを知りたいだけです。

1
Kevin

私の仮定は正しいですか?

完全ではありませんが、Tomcatの前でnginxを設定することは、nginxの「デフォルト」php-fpmを使用してCGIを実行しているPHP)でnginxを設定することとほとんど同じです。

Tomcatから動的コンテンツを転送および返すだけで、nginxの優れた静的コンテンツ機能を利用できます。

ボトルネックはどこで発生しますか:ページを作成するか、クライアントに提供しますか?

Tomcatを実行するだけの場合と比較すると、おそらくどこにもありません。nginxが他のすべてを処理している間、TomcatがJava部分を実行するのを軽減できます。 nginxがTomcatからページを要求して提供するのにかかる余分な時間を与えるか、または取ってください。

Tomcatを使用して動的コンテンツを生成する場合、Tomcatをnginxでプロキシすると、nginxのパフォーマンスが向上しますか?

はい。

また、コンパイル言語であるため、PHPよりも高速に実行されます(ここでは、JavaはPHPよりも約37倍高速であることが示されています)

あなたがインターネットで読んだすべてを信じてはいけません;)

インタープリター型言語は、コンパイルされたコードのパフォーマンスが常に不足する可能性がありますが、通常、オペコードキャッシュが助けになり、コードを半コンパイルされた状態にします。これにより、処理速度が大幅に向上する傾向があります。

コンパイルされたコードの範囲ではありませんが、十分に近いです。

2
Mark

JavaとPHPのどちらかを選択する場合は、次の点に注意する必要があります。

  • どちらも優れた言語です
  • これらの言語を使用して、多くの優れた高性能Webアプリケーションが作成されています。
  • どちらにも優れた開発者コミュニティがあります

両方の言語で同じアプリケーションを作成し、両方をデプロイしてテストしない限り、どちらがパフォーマンスが優れているかを尋ねることは不可能です。もちろん、これは99.9999%のチームにとって非常に費用と時間がかかります。

このタイプの選択に直面したとき、あなたが尋ねたいと思うかもしれないいくつかの質問があります代わりに「どの言語がより良く機能するか」:

  • 私の開発チームを最も生産的にする言語とフレームワークはどれですか?
  • 展開チームが監視、展開、および保守するのに最も簡単なタイプのアプリケーションはどれですか?

答えがPHPの場合、予想されるパフォーマンスの向上のために別の言語でアプリケーションを作成しようとするのは愚かなことです。ただし、チームが(たとえそれがあなただけであっても)Javaにはるかに慣れている場合は、できる限り自分が知っていることを実行することに時間を割くことをお勧めします。

HTH!

5
Tom Purl