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
で、紹介されています。