質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ロードバランサー

ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3518閲覧

AWSで、ロードバランサを介すダウンロード処理でタイムアウトになってしまう

matomechan

総合スコア5

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ロードバランサー

ロードバランサー【負荷分散装置】は、複数のサーバへアクセス要求を分散する装置です。 要求を分散することで各サーバが快適な応答速度を保つことを目的としており、 アクセスの多い大規模サイト等は、この装置により 複数のサーバに負荷を分散する事で安定な運用が可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/04/13 13:00

AWS上に以下の様なシステムがあります。

[ロードバランサ] ⇨ [EC2A] ⇨ [EC2B] 

EC2A:ウェブシステム(CentOS,apache,PHP)
EC2B:ダウンロードシステム(CentOS,apache,PHP)

EC2Aのウェブシステムから、apacheのリバースプロキシを使って、EC2Bのダウンロードシステムを呼び出し、同じドメインとして利用しています。
ロードバランサのタイムアウト値が60秒となっていて、ダウンロードシステムでのDL処理が
60秒を超えると、「504 gateway time-out」が発生しています。

やりたこと

ロードバランサの設定は60秒のままで、ダウンロードの許容時間をあげたい

上記のような事を実現することは可能でしょうか?
ダウンロードシステム側にTimeoutやkeepalive timeoutなどを設定してみましたが
60秒でタイムアウトとなってしまいました。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ロードバランサの設定は60秒のままで、ダウンロードの許容時間をあげたい

それが出来ちゃうとタイムアウト設定の意味がなくなってしまうので、出来ないはずです。
以下のような方法で回避するしか無いかと思います。

  • 一回のHTTPリクエストを60秒以内になるように分割

1.大きなファイルをダウンロードする場合は、EC2Aがファイルを分割
2.ブラウザ側ではJavaScriptで非同期に分割されたファイルをそれぞれ取得、取得したら結合して保存 or 分割する時点で結合をサポートする形式でダウンロードさせて、ユーザーには自力で結合してもらう
*60秒以上かかるような巨大ファイルをJavaScriptだけで何とかするのはかなり厳しい気がします。

  • ダウンロードの場合はELBを通らないようにする(S3を使う)

ダウンロードファイルについて、一時的にpublicなS3バケットに期限付きで投入して、そのURLをブラウザに伝える。
ブラウザはそのURLから期限内にダウンロードする

  • ダウンロードの場合はELBを通らないようにする(別のELBを使う)

別のELB(サブドメイン+タイムアウト設定長め)をEC2Aに紐づけておき、ダウンロード関連の場合だけそちらを通るようにする。

投稿2020/04/14 04:38

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matomechan

2020/04/14 09:37

tanatさん ありがとうございます。できないとのことで、非常に参考になりました。 タイムアウト値を伸ばす方向で検討すすめます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問