リバースプロキシ + アプリケーションサーバな構成で動作するサービスを構築しています。

ここから質問です。
画像を投稿するプログラムを作成し、実際にアップロードしてみたのですが、
画像数が少ない時(1度に5枚までの画像をアップロード出来る)は特に問題無く処理が完了するのですが、ある程度画像の総サイズが大きくなると
<<<
Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /huga/hoge/

Reason: Error reading from remote server
>>>
とProxy Errorが発生してしまいます。
このプログラムの処理は主に下記の通りです。
・アップロードされた画像から各種サムネイル作成
・画像用サーバにFTP接続し、ユーザー用のディレクトリ確認。(存在しなかったらmkdir)
・各種画像をアップロード
・画像情報をDBに記録。
・言語はPHP5.1.6
尚、サムネイルは問題無く生成されFTPでのアップロードも出来ています。
アプリサーバ側のログではステータスコード200で問題無しです。


大まかに書きましたが、どのような原因が考えられるでしょうか?
※足りない情報がありましたら、すぐに回答へのコメントにて追記します。
※文字数制限でかなり削りました…

回答の条件
  • 1人10回まで
  • 登録:2006/12/18 15:52:43
  • 終了:2006/12/25 15:55:03

回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/12/18 16:03:23

ポイント27pt
アプリサーバ側のログではステータスコード200で問題無しです。

との事から Proxy <-> アプリケーションサーバー間の通信に問題がある可能性を考えます。


リバースプロキシに何を使用されているかが分からないのですが、proxy 側でリクエストのサイズ制限、またはレスポンスのタイムアウトが設定されていませんか?

それぞれ制限されているようなら緩和する事で対応できるかもしれません。

id:maoya

との事から Proxy <-> アプリケーションサーバー間の通信に問題がある可能性を考えます。

私もそう思っています。

サイズ制限、タイムアウトの設定は特に設定しておりません。

設定していないのが問題だったりしませんか?

2006/12/18 16:21:08
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/12/18 16:24:18

ポイント27pt
設定していないのが問題だったりしませんか?

使われているOS・Proxyソフトウェアが分からないのでなんとも…。


一般的には無限に受け付ける事は無いので、デフォルトである程度の制限はあります。

また、タイムアウトに関してはOSの制限を受けるかもしれません。


アプリケーションサーバー単体で動作させた場合(リバースプロキシを使用しない)正常に動作するのでしょうか?

また、その場合実行時間はどの程度かかっているのでしょうか?

id:maoya

Proxy側の情報を。

OSはDebian 2.8.4で、サーバはApache2.0.54です。

リバースプロキシはmod_rewrite + mod_proxyで構築しています。

Pound等は使用していません。

アプリケーションサーバー単体で動作させた場合(リバースプロキシを使用しない)正常に動作するのでしょうか?

正常に動作します。

また、その場合実行時間はどの程度かかっているのでしょうか?

初めて計りましたが42秒です。

5枚合計で4.5Mの画像をアップロードしました。

2006/12/18 16:37:05
id:b-wind No.3

b-wind回答回数3344ベストアンサー獲得回数4402006/12/18 17:01:04

ポイント26pt

なるほど。42秒は結構長いですね。

5枚で 42 秒と言う事は今回問題になっているパターンではそれ以上の枚数という事でよいでしょうか?

http://httpd.apache.org/docs/2.0/ja/mod/mod_proxy.html

一応 ProxyTimeout のデフォルトは 300秒なので問題は無いはずですが試してみるのもいいかもしれません。

あと変更できるので関係ありそうなのは、ProxyIOBufferSize と ProxyReceiveBufferSize ぐらいでしょうか。


あとは関係有るかどうか分かりませんが、PHP の方で Content-length は出していますか?

これが無いと Proxy はいつまで待っていいかわからないときがあるので。

id:maoya

なるほど。42秒は結構長いですね。

やはり長いですよね。。。

今回問題になっているパターンではそれ以上の枚数という事でよいでしょうか?

とりあえず当面はアップロード枚数は5枚までとする予定です。

ProxyIOBufferSize と ProxyReceiveBufferSizeに関してはほとんど知識が無いのでこれからマニュアルを見て調べてみます。

PHP の方で Content-length は出していますか?

今のところ出していません。

これもちょっと問題あるかもですね。

#確かエラーになった時はステータスコード502で、Content-lengthが404になってました。

2006/12/18 17:49:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません