3

tomcat 6では、openbluedragonを実行しているサーブレットがあり、イメージを除いて、すべてがコンパイルされ、サーバーが高速になりますが、実際には大幅に遅れています。画像配信の最適化の提案はありますか?

これが私のserver.xmlです:

    <Service name="Catalina">

      <Connector port="8009" protocol="AJP/1.3" />
      <Connector port="8080" maxThreads="100" protocol="HTTP/1.1" connectionTimeout="20000" />
      <Engine name="Standalone" defaultHost="hostname.whatever" jvmRoute="ajp13">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      <Host name="hostname.whatever"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        ...context
      </Host>

    </Engine>
  </Service>
4

3 に答える 3

4

もう 1 つのオプションは、Apache をフロントエンドとして使用し、tomcat を mod_jk に接続することです。このようにして、Apache に静的コンテンツ (画像、CSS、JavaScript など) を提供させ、Tomcat に動的コンテンツを生成させることができます。静的コンテンツを動的コンテンツから分離するために少し作業が必要になるかもしれませんが、私にとってはうまく機能します。

Unix では、ポート 80 にバインドされているため、多くの場合、root として実行することを余儀なくされるため、Apache をフロントエンドとして使用するのは良いオプションです。Apache は、ポートをバインドした後にルート権限を削除する方法を知っていますが、Tomcat は知りません。一般に公開されているサーバーをルートとして実行する必要はありません。

(これはリバース プロキシの回答に似ていますが、プロキシではなく mod_jk を使用します)

于 2008-09-22T06:35:28.827 に答える
4

同じ一連の画像を何度も提供していますか? その場合、適切な Expires ヘッダーを追加するサーブレット フィルターを追加すると、Tomcat の作業を大幅に節約できます。提供される画像の速度は向上しませんが、処理する必要があるリクエストの数が減るだけです。これに関する多くの例がウェブ上にあります。

于 2009-01-14T11:50:08.763 に答える
3

オプションがある場合は、アプリケーションの前にリバース プロキシを追加できます。職場で、すべてのインバウンド HTTP 接続を受信する Apache Web サーバーを使用しています。URL に基づいて、リクエストを別のサーバーに転送するか、コンテンツ自体を提供します。このアプローチを使用して、Trac サイトの静的コンテンツの提供を高速化しました。ProxyPass および ProxyPassReverse ディレクティブは、このルートに進みたい場合に探し始めるのに適した場所です。

簡単な例として、/images という仮想ディレクトリがある場合、Apache はそのディレクトリ内の何かに対するすべての要求を処理し、それ以外はすべて Tomcat インスタンスに転送できます。構文はかなり包括的です。静的コンテンツを識別する方法に何らかの方法がある場合、これは機能するアプローチです。

ここでの選択肢は Apache だけではありません。最近のすべての Web サーバーには同様の機能が含まれていると思います。もし私が今日始めていたら、代わりに LigHTTPd を検討していたでしょう。

これを自動的に判断するキャッシング リバース プロキシさえあるかもしれません。私はそれらのどれにも精通していません。

于 2008-09-20T22:50:38.467 に答える