2

私たちはこの問題で実行しています。Web サービス (soap4r を使用) を使用して何らかの検索を実行していますが、Web サービス サーバーがダウンし、アプリケーションがそれに接続しようとすると問題が発生します。その時点でアプリケーションにアクセスできなくなり、すべての顧客がブロックされます。

それを避けるために何ができるでしょうか。ブロックされている雑種へのルーティングをブロックすることは可能ですか? (Apacheのプロキシはラウンドロビンアルゴリズムを使用していると思います)

ありがとうロベルト

4

3 に答える 3

1

これは、Mongrel や Apache の問題よりも mod_proxy の問題のように思えます。ここで説明されているようにプロキシ タイムアウトを設定していますか?

于 2008-10-09T16:04:41.840 に答える
0

mod_rewrite を使用して、Apache のプロキシ タイムアウト エラーよりも Web サービス クライアントにとって有用なエラー ページを返します。たとえば、この Apache 構成がmaintence.html存在する場合はレンダリングされます。そのため、ファイルをドロップするだけで、サーバーは自動的にメンテナンス モードになります。

# Check for maintenance file and redirect all requests
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]

適切なコンテンツ タイプを設定した XML ファイルにすることで、静的ファイルを、基本的に「10 分待ってからもう一度お試しください」という Web サービス応答のように見せることができます。

Capistrano のweb:disable タスクは、サイトが利用できない期間の引数を取り、maintence.htmlファイルを生成するときにそれを HTML に入れるため、役立つ場合があります。

于 2008-10-12T16:46:46.983 に答える
0

Soap4R リクエストにタイムアウトを設定する必要があります。connect_timeout 属性をかなり小さい値に設定します。これにより、リクエストがハングしたままになるだけでなく、コードで例外が処理されるようになります。

また、タイムアウトが mod_proxy_balancer 構成で設定されていることを確認する必要があります。

于 2008-10-14T17:47:56.063 に答える