ラベル apache の投稿を表示しています。 すべての投稿を表示
ラベル apache の投稿を表示しています。 すべての投稿を表示

2015年10月4日

AWSのELBを使っている場合のタイムアウト対応

 AWSを使ってシステム構築をしています。
今回、ファイルアップロードをしてデータ登録をする処理をつくったのですが、ある程度大きなファイルをアップロードするとHTTP Status 504のタイムアウトになってしまいました。
※実際のところはファイルのアップロードではなく、アップロードしたファイルの処理に時間がかかっています。


エラーになる場合は、60秒前に504ステータスが返ってきていました。
(504は、Webブラウザからのリクエストを受けたサーバーがされに別のサーバーにリクエストを送信した際に、別のサーバーからの応答が一定時間に返ってこないことを表しています。)


今回のシステムの構成は以下のようになっています。

[Webブラウザ] - [ELB] - [Webサーバ(Apache)]

Webサーバのタイムアウト時間は設定していないのでデフォルトの300秒らしいです。

で、60秒以内で504が返ってくるのはおかいいのでApacheではない。
てことは、504の意味を考えていると、ELBとWebサーバの間でしかないので、ELBの設定を確認したところ、「接続設定 アイドルタイムアウト: 60秒」という設定がありました。

で、これを編集し、Apacheと同じ300秒に変更してファイルアップロード処理をしてみたところ正常動作をしました。
めでたし、めでたし。


まぁ、もともと、このあたりの設定(ELBに限らず)とかは、全然やったことがなかったので新しい知識がついたということで大OKとしたいと思います。
このあたりをちゃんと考えられるプロの人だったら一瞬でわかったり、あらかじめ長めにしたりするんでしょうね。

2014年4月13日

Apacheとphpでウェブサービス作るときの備忘録

 マルチバイト文字(日本語とか)を使ったフォルダを使っているとダメという話です。

 Apacheとphpとmysqlを使ってwebシステムを作っているのですが、作っているシステムがどうしても動かなくて悩んでいました。
 ふつーは、そのシステムがそもそも動かないんじゃないの?って話になるんですが、違う環境でやると動くのでプログラム的には問題ありません。

環境を軽く書くと以下のとおりです。

最初に動いていた環境


  • OS:Windows7
  • Webサーバー:IIS

動かなくなっていた環境

  • OS:Windows7
  • Webサーバー:Apache

動かなくなった環境で実行するとPHPのソースがそのまま表示されたり、「Fatal error: Unknown: Failed opening required…」と表示されたりいろんなことが発生しました。

結局何が問題だったかというとapacheのDocumentRootに設定していたディレクトリのパスに日本語が含まれていたことです。
 この原因でエラーになっているというのに気づくまですごく時間がかかってしまいました。

 さらに、時間を喰った原因としてWindowsには、シンボリック・リンクという機能があって、フォルダの別名(ショートカットとは違う)を付ける機能があるのですがそれを使えば解決できるのではないかと考えてその設定をしてしまったことです。
 いくらシンボリック・リンクを使っても日本語が含まれるとダメなんですよね(内部的には実際のフォルダ名を使っているんでしょうね。)

なので、apacheで日本語を含むディレクトリでの開発はしないようにしましょう。


なぜこうなったかというとこんな経緯があります。
ごく当たり前の対応だと思います。

  1. プロジェクトのフォルダは日本語名を付けてわかりやすくしたい
  2. ソースはそのフォルダ内に入れておきたい

ですが、これをするとapacheで使えなくなるので方式を考えました。


旧フォルダ構成

140001_日本語のプロジェクト名
   develop
      src        (←ここにソースを入れている)

新フォルダ構成

140001_develop
    src        (←ここにソースを入れている)
140001_日本語のプロジェクト名
   develop    (140001_developフォルダをシンボリックリンクでリンク)
     src

これでプロジェクトフォルダ一つでまとめて管理ができるようになります。
そもそも2つに分けたんだったらそのままえいんじゃ無いの?ってのもありますが…。


教訓

システム開発時のソースファイルは必ずアルファベットと数字だけのフォルダにすることっ!