オルタナティブ・ブログ > ビジネスをデザインするブログ >

事業開発ほどクリエイティブな行為は他に無いと思いこんでいる人間の日常

Azure 上でのCGIのタイムアウト設定がわからず今日も暮れていく

»

Azure 上に置いたWordPressをいじっていると、

FastCGI process exceeded configured activity timeout

というエラーを頂戴いたしました。

「はいはい。タイムアウト長くするから待ってて・・・」

と、軽く考え、Google先生に聞いてみたのですが、これがなかなか見つからない。

雰囲気的には、web.roleconfigにactivitiyTimeoutを設定すればいい感じと思い、いじってみるものの、activityTimeoutアトリビュートが設定できない。うーん。

そう思い、MSDNライブラリを見ていると、

http://msdn.microsoft.com/en-us/library/dd573352.aspx

Note

Currently only settings for FastCGI may be configured via the web.roleConfig file; it's not possible to add other server settings to indirectly configure the applicationHost.config file in Windows Azure.

otherとは、たぶん、<application>において、fullpathとargument以外を指しているものと思われる。

と書いてある。ということは、いじれないってこと?

何か、ほかの方法ないかなあ。php.iniとかに書く人もいる見たいだけど、エラーはあくまでFastCGIの設定みたいなので、ここで解決したいなあ・・・。

しかし、最近ハマリっぱなしなのですが、一般の人は普通に解決できてるのかなあ。単に私のレベルが低いだけかな。

----- 追記 -----

とりあえず、この問題は解決しましたが、本質的なものではありません。私がCGIのタイムアウトの処理のために考えた方法を書き残しておきます。

まず、このCGIのタイムアウトは、ローカルでは発生していないため、サーバ側(のスペック)の問題だと考えました。そのため、

1)取りあえず別のロケーション(データセンター)でホストさせてみる

2)処理に使用するインスタンスやコア数を増やしてみる

3)Hosted Web Core を利用して、カスタムできるWebサーバを用意する

4)タイムアウトをいじれないなんて、私の知識不足だと信じる

の3つを対応策として考えました。

今回は、GUIで簡単にできることから(Hostingサービスを作成し直しますが)、1)をまず試したところ、解決したので、2)、3)はやりませんでした。ちなみに、ロケーションをEast AsiaからAnyware USに変更しました。Azureに使用されているハードウエアのスペックは1.6GHzのCPUに1.75GBのメモリが1つの基準として決められている?ので、果たしてIDCの変更自体が有効だったのかはわかりません。

2)についてですが、今回のタイムアウトはWordPressのインストール中に発生していました(おそらく、初期設定のCreate DBでタイムアウトしていると思われる)。そのため、WebRoleのインスタンスを増やしたところで効果はなく、おそらくコア数を増やす必要があると考えました。が、CreateDBが果たしてSQL Azrueの中で分散対象となるべき処理なのかは疑問が残るところです。

インスタンス数は、Azureの管理画面のConfigureから変えれます。コア数は、VisualStudioで行います。WebRoleのプロパティのConfigurationで行います(インスタンスもここで変えられます)。

3)は、本末転倒な気がしますが、現在のところ、CGIの設定を細かくいじるためには、このような方法しかない?みたいです。

ちなみにそのやり方は、

http://blog.smarx.com/posts/changing-advanced-fastcgi-settings-for-php-applications-in-windows-azure

で、紹介されています。

Comment(0)