cgiがうまく動作しなくなった

サイト運営費捻出のため広告を使用しています

さくらインターネット

 このブログは「さくらインターネット」というレンタルサーバーの会社から共用型のレンタルサーバーを借りて運営しています。この「さくらインターネット」のサービスについては非常に安定していて、混雑する時間帯でもスイスイとページが表示されるので大変に気に入っています。

 既に契約してから2年が経過していて、当初はスタンダードプランというホームページスペースが1GBまで使用できるプランを使ってきましたが、ホームページスペースが足らなくなってきたため、昨年からはホームページスペースが3GBまで使用することができるプレミアムプランというサービスにグレードアップしました。プレミアムプランでは1台の共用サーバーの中に収容されるユーザーの数がさらに減るため、従来よりも快適にレンタルサーバーを運営できるようになっていました。

 しかし、ここ1週間程度、どうも様子が変わってきました。このブログサイトの左下にはアクセスカウンターをつけているのですが、このアクセスカウンターがアクセスした契機によっては表示されなくなるという状況が発生しています。どんなエラーに引っかかっているのか、単独でCGIを動かしてみてそのレスポンスを確認してみたのですが、「503 SERVICE temporary Unavailable」というエラーコードが返ってきています。「一時的にサービスが利用できない状態になっているが、またリトライすればアクセスできるかもしれない」 というエラーコードです。

 一時的に負荷の状態が高い状態になっているか、レンタルサーバー会社が決める閾値(制約値)に引っかかってしまって、何らかの制限を受けているか、どちらかのパターンなのではないかと推測しました。


 前者であれば、暫く様子を見ていれば問題はなくなるはずです。数日、様子を見てみたのですが、特に状況は改善されませんでした。さくらインターネットについてはサーバーごとにどの程度の負荷がかかっているのか非公式に情報が提供されているサービスがあります(有志が運営しているので全部のサーバーの情報があるとは限りません)。自分がどのサーバーに収容されているかは、コントロールパネルにログインして「サーバー情報の表示」を参照すれば知ることができます。これで、自分のサーバーの負荷状況を確認してみたところ、特に変わったところはありませんでした。

 とすれば、このブログでリソースをかなり使ってしまっていて、何かの制限に引っかかった可能性が高くなります。そこで、さくらインターネットのヘルプでどんな制約があるのか確認してみることにしました。この中には、明確な制約値が書かれているわけではないのですが、過度にCGIが実行されたり、CRONジョブを1時間に2回以上流したり、過度な情報転送をしたりした場合には、何らかの制約、もしくはサービス提供の中止を受ける場合があると書かれています。このうち前者の何らかの制約を受けた可能性があります。まずは、警告のメールをさくらインターネットさんから受け取った可能性もありますので、もう一度メールボックスを探してみましたが、特に警告メールは貰っていないようです。そんなに大きな問題をしでかしたわけではないのでしょうか。

 ひとつ思い当たるとすれば、年末年始の休暇および先週の三連休の中で、このブログのデザインに手をつけて、ブログ全体の再構築を結構な回数をやり直したことがあります。これで、サーバーに大きな負荷をかけてしまったかもしれません。実は昨年まではCGIプログラムは同時に3多重まで動くことができずに、これ以上のCGIを同時に動かそうとしても4多重目からは実行が保留され、3多重で走行しているうちのCGIがどれかひとつ終わったところで、4つめのCGIの実行が開始される状態になっていました。ところが、この年末年始にいじっているときには、4多重目以降のCGIも実行が受け入れられていたので、調子にのって色々なエントリーの再構築を繰り返してしまいました。これでペナルティを与えられてしまったような気がします。

 このまま動作したり動作しなかったりのアクセスカウンターをつけていても、まったくそのカウント数値に信憑性が無いので、対策を施すことにしました。ひとつ実行した対策は、「トータル、本日、昨日」と3つの数値を出していたのですが、「昨日」の数値を出していてもあまり意味がないので、この「昨日」を表示しているCGIの実行文を、MovableTypeの各テンプレートから削除しました。

 これだけでCGIプログラムの実行回数が1/3分だけ減るはずです。これで現在は様子を見ていますが、アクセスカウンターの「累計」と「本日」の部分はうまく表示されているようなので、今のところはうまくいっているようです。このままの状態でまた様子を見ていきたいと思います。

 もしも、これでもうまくいかないような状態が続くならば、アクセスカウンターを無くしてしまうか、より高度なサービスに移行することも視野に入れようと思います。ただし、さくらインターネットでは、プレミアムプランよりも高度なサービスとなると、「専用サーバー」サービスしかなくなってしまうかと思います。これだと使用料金も跳ね上がってしまうので、ちょっと頭が痛いところです。このレンタルサーバーを借用する前には自宅に置いたパソコンを24時間起動して、WEBサーバーとして使用していたのですが、また同様のことをしたほうが、金銭的な負担は少なくてすむかもしれません。(反面、1日中動いているパソコンが家の中にあるのは五月蝿いです。共用型のレンタルサーバーを使えるならば、自宅サーバーよりもレンタルサーバーのほうがお徳かと思います。しかし、専用サーバーが必要になってしまったら、自宅サーバーが良いか専用サーバーを借りたほうが良いのかは頭の痛い選択になりそうです)

(2007/01/21追記)

 相変わらず、503エラーは発生しています。まだまだ対策が足らないようです。

 さくらインターネットで実行中のプロセスを確認する方法を知りました。下記のURLにアクセスすることで情報がブラウザ画面に表示されます。

  ★ 「https://secure.sakura.ad.jp/rscontrol/wwwXXX.sakura.ne.jp/ps」

 この中でwwwXXXの部分は自分のレンタルサーバーがどこに収容されているかを指定します。この情報はさくらインターネットのコントロールパネルから「サーバー情報の表示」を指定することで確認することができます。

 ここでずっと長い間、CGIプログラムが起動されっぱなしになっていることはないかを特に注意深く確認してみました。しかし、特に変なプロセスは見つかりません。気になるとすればかなりの高頻度でMT-TB.CGIに起動がかかっていることです。これは誰かがスパムのトラックバックをかなりの高頻度で仕掛けているためと考えられます。変な負荷がサーバーにかからないように、トラックバックについては全てを承認制にして、無用に再構築プロセスが入らないようにしました。これで多少は負荷が落ち着けば良いのですが・・。暫く、様子を見ることにします。

(2007/01/28追記)

 その後も、様子を見続けていたのですが、特に改善されないので、根本的な対策を取ることにしました。アクセスカウンターのCGIプログラムについてはさくらインターネットのレンタルサーバー上にインストールしていたのですが、これを別のサーバーの上に移しました。具体的には私は@NIFTYをプロバイダとして使用しているのですが、そうするとホームページスペースが少量ながら無料で借りることができます。

このホームページスペース上にCGIプログラムをインストールしました。単純にさくらインターネット上にあったCGIプログラム群をパソコンにFTPでごっそりと転送して、そのままそのディレクトリを@NIFTYのサーバー上にFTPで転送し直しただけです。そして、このブログのアクセスカウンターのうちKENT-WEBから提供されているアクセスカウンターの方のCGIパスを@NIFTYの方のパスに変更しました。少し動作は遅いようですが、きちんとアクセスカウントをしてくれているようです。また、さくらインターネット側も負荷が減ったためか、きちんとCGIプログラムが動くようになりました。503エラーは帰ってきていないようです。また、この状態で様子を見ていこうと思います。

(2007/02/02追記)

 原因がわかりました。このブログではmt4iというプログラムで携帯電話のiモード向けに記事の配信をしています。どうも、携帯サイトの検索結果で上位に表示されるようになって、mt4iのcgiプログラムの起動回数が増えたために、さくらインターネットのサーバー負荷をあげてしまっていたようです。今日は朝からmt4iのcgiプログラムをリネームしてしまい、起動がかからないようにしてしまいました。携帯電話からのアクセスではnot foundになってしまっていると思います。

 携帯電話向けのサイト公開については、何か別の方法でできないか、これから検討してみようと思います。

コメント