web-dev-qa-db-ja.com

AJPを絞る方法

WindowsでAJPを介してApache2をTomcat7に接続します。

通信を絞ることができる構成はありますか?

これは私のworkers.propertiesです

worker.list=node1
worker.node1.port=8009
worker.node1.Host=127.0.0.1
worker.node1.type=ajp13

これは私のhttpd.confです:

<VirtualHost 127.0.0.1:80>
  JkMount /* node1
</VirtualHost>

エンタープライズajaxアプリケーションでupload-progress-barsと非同期リクエストをテストする必要があります。


mod_bwはnot JkMountで動作します。

1
Peter Rader

私の知る限り、Apache側でもTomcat側でもAJPはスロットルを実行しませんが、代わりに可能な限り高速にレイヤー間で要求を渡そうとします。

ここにいくつかの考えがあります:

ワーカーの接続制限を設定できます。これに達すると、ワーカーはそれ以上の接続を受け入れなくなり、飽和と過負荷を回避できます。

より多くのバックエンドホストを導入し、それらの間でワーカーのバランスを取り、容量を増やすことができます。

たとえば、コーディングソリューションとなるカスタムフィルタを使用して、Tomcatの帯域幅を制限できます。

compressionオプションを使用するために、AJPの代わりにhttpコネクタを使用して、同じ接続でスループットを向上させることができます。

ネットワークレベルの帯域幅制御を導入して、「外部から」AJP接続スループットを抑制することができます。 Linuxでは、これはiptables -limitおよび-limit-burstディレクティブを使用してネイティブに実行できます。しかし、私の知る限り、Windowsにはスロットリングソリューションを備えたネイティブネットワークレベルの帯域幅がありません。幸いなことに、NetlimiterNetbalancerなどのきめ細かい帯域幅制御を提供するサードパーティのアドオンがあります。

OSの外を見ると、ハードウェアロードバランサーなどのリミッターアプライアンスを介して接続を実行できますが、なぜAJPを使用するのでしょうか。

ただし、どちらの方法でスロットルを実行する場合でも、リクエストの実行が遅くなるとセッション数が増えることが想像できるため、ApacheとTomcatの両方にリクエストキュー/バックログを増やす能力があることを確認する必要があります。

最後に、IISにはネイティブの帯域幅調整機能があり、ARRモジュールを介してバックエンドTomcatにリバースプロキシ/ URL書き換えが可能です。ARR:ed接続で調整機能を使用できるかどうかはわかりませんが、とにかくWindowsを使用しているので、一見の価値があるかもしれません。

1
ErikE