いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。いつの頃からか、自分のサイトがクソ重たいと感じるようになり、知人などからも「重いよね?」「見れなくない?」などの苦情を頂いておりましたが、そのうち直そうと思っておりました。このサイトはXreaというレンタルサーバを使っています。安いプランを使っているので、同じIPアドレスに300サイトぐらいが詰め込まれている状況です。Check〕2009/2頃には逆引きネームサーバのうんたらかんたらという大規模障害が発生し、しばらくアクセスできない状態が続いたり、かと思えば三分ぐらい経つとページが表示されたりと、普段このサイトを見てくれている人には大変ストレスフルな状態が続いていました。直そうとは思っていたんですが、縦書きプロジェクトの進捗が芳しくないことと、原因がわからないまま「サーバ変えて終わり!」というのが性に合わないので、今日の今日まで移転の決断が遅れてしまいました。あと、ユーザ激減という事態が普通にヤベーなと思ったこともありますです、はい。土日になると三分の一ぐらいに減っちゃうんですよね~。いうわけで、このエントリーでは結論とそれにいたる経緯についてでも書こうと思います。結論Xreaを解約して、さくらサーバへ移転。悪いのは外部Webサービスの多用とその実装方法でした。1.サーバスペックの検証まず、このサイトで表れた症状というのは、「ページが表示されない」です。読み込み中...普通、リンクをクリックするなり、特定のページへアクセスしようとすると、ブラウザに「読み込み中」みたいな表示が出て、アドレス入力欄に該当するページのURIが表示されますね。それからページが表示されます。このサイトへアクセスしようとすると、この「読み込み中」がいつまでたっても変わらないんですね。これは「Javascriptが重い」とか、「画像データが巨大」とか、そういった問題ではなく、そもそもHTMLファイルが出力されていないわけです。したがって、ページの表層ではなく、サーバ側の問題なのではないかなとあたりをつけました。実施したのがこのテスト。$start;?>テストというほど大層なもんではございませんが、これでサーバ(で動くPHP)の性能をある程度見ることができます。このテストを自分の家のPCと、Xreaのサーバ、そしてさくらインターネットのお試しサーバでやったんですが、あんまり変わらない。いうことは、PHP自体の実行速度は問題じゃない。次に疑ったのが、データベースI/O。WordPressはデータベースへの接続があるので、ここがボトルネックになっていることも考えられます。そこで今度はこんなテスト。$start;?>で、これまたあんまり変わらないんですね。取得するフィールドの数が増えれば時間もかかるんですが、1個や2個のフィールドならさくっと表示します。2.WordPressの検証で、Xreaはそんなに悪くないんじゃないかと思い、今度はWordPressを疑ってみました。僕はWP大好きっ子なので、よく仕事などで「やっぱり企業はMTじゃないと」などと言われると、「なにを!」と思っていたりするんですが、サーバとの相性でパフォーマンスが落ちるということもあるのかな、と疑ってみた次第です。膨大にあるWordPressの関数を紐解くのは面倒すぎるので、Xdebugで試してみました。Xdebugというのは、PHPerならよく知っているデバッグツールです。関数ごとの実行時間などを教えてくれます。Wikiさんで詳しく紹介されています。いうことは、WordPressの構造にも問題はないわけです。3.プラグインの検証とりあえず、さくらのスタンダードプランを借りてみて、WordPressを丸ごと上げてみました。時間はかかるものの、1分ぐらいで表示。Xreaだと3分ぐらいかかっていました。いいつつ、すでに怪しいんじゃないかと思っていたのがこちら。:いちいちついったーにリクエストしてるっぽいから。:いちいちskypeにリクエストしてるっぽいから。:いちいちAmazonにリクエストしてるっぽいから。:毎回全文解析してリンク入れてるっぽいから。使ってるWebサービスちなみに、上記のほとんどが外部WebサービスAPIを利用しているもの。file_get_contents()とか、curl()とか使ってるんじゃないでしょうか。サーバにデータをもらいに行く」という行為がボトルネックであることにはかわりありません。PHPの段階でこれをやられると、相手の都合で処理を止めることになりますからね。