« blogdb.jp Blog検索サイト | メイン | 山南さんの特集ページ in NHK »

ライブドアが重いのは。

noblog::短気な猫3rdさんの「いい加減にしろライブドア [期間限定]」 を読んで、
貧乏だけど心は萌えさんのBlogにある「livedoor blogが重いのはアクセス数増加じゃなくてバグ?」についてちょっと考えたことを書いてみた。

個人的には問題は「動的生成」ではなくて、「静的ページ」の生成にあるのだと思う。
データベースをきちんとできれば、全部動的生成というのが楽な解決手段じゃないかなぁと思います。

ここからは想像で書いてます。

Livedoorで抱えるBlog数が15万ぐらい。それぞれに記事やスタイルシートなど平均10ページの静的ページがあったとすると、150万個ものファイルをファイルシステムで管理しなければならない。しかも素早く入出力する必要がある。これを1台のファイルサーバで動かしてたりするのではないかと思ったりします。(2台目以降はバックアップ)
もしそうならこれがボトルネックなのではないでしょうか。ファイルシステムが限界の場合は、CPUを強力にしても変化はありませんし、HDDをかえてもだめ。CPUもHDDも10倍とか100倍の早さにはならないし。
少なくてもext3ではだめだろうと思う。ReiserFSでいくらか改善するけど、ReiserFSとNFSとの相性がよろしくないので、共有ディスクとして使えないので負荷分散には向きません。

なので、いっそのこと、ファイルシステムを使わずに、動的生成すればいいんじゃないかと思う。
mod_perlなどでHandlerを書いて、「If-Modified-Since」を実現して、MySQL(たぶんDBはこれじゃないかな)を活用すれば今までと外見代わらずに今の重さを改善することができるんじゃないでしょうか?

すこし重いときもあるけどはてなは動的生成ですよね。たしか。

うちのサービスでも、情報の一部はファイルシステム上に保存しています。
アクセスが増えてきてext3(ext2)では非常に遅くなってしまったため、一時期よりReiserFSを採用しています。
うちの場合は、ファイルが一カ所のファイルサーバで管理ではなくそれぞれにサーバに置いていたのが幸運だったと思ってます。それでも最近重いです。ファイルシステムに置いてある情報のデータベースへの移行は考えています。話はすすんでいませんが。

コメント

トラックバックどうもです。
DBアクセスを伴わない、場合はおっしゃるとおりかもしれませんが、
DBアクセスを伴う場合トランザクション負荷が、ext3負荷よりもはるかに。重いという事が問題になってるのではないでしょうか?現実問題として、静的生成である、TOPおよび個別ページは早いですが、動的生成である、カテゴリは非常に重くなってます。

※トランザクション負荷とはselectなどのクエリー負荷ではなくBEGIN-COMMITの負荷の事を指しています。

スタティックなページ配信が動的なページの配信より早いのはほとんどの場合当然です。
記事では「スタティックなページを生成するのが大変なのでは?」と書いたつもりだったのが言葉が足りなかったようです。すみません。

Blogでトランザクションが必要な作業はないんじゃないかなぁ。トランザクションがないMySQLで十分だと思います。早いし。
データベースの方が高価なサーバを買えばそれだけ性能アップも狙えるし、レプリケーションとか負荷分散とかのちのち何かとよいことがあると思ってます。
勘違いかもしれませんが。

スタティック生成が大変というのはどの部分を気にされてますか?ファイルシステムですか?
生成処理そのものであれば、動的も静的も同じなので、ファイルシステムが重いか、SQLが重いかという差分でしょうか?。まぁ、ファイルシステムがextなのか、SQLがMySQLなのかどうかも分かってないような気がしますが・・・。自作SQLシステムとか?

社長日記 8/27(金) 機内で朝食
http://blog.livedoor.jp/takapon_jp/archives/6245422.html
のコメントを読むと、DBはDB2みたいだな。
想像より規模がずっと大きいんだろうな。

コメントを投稿