phpフレームワークの負荷について。


月間PVが数百万~1000万程度のサイトの場合、
CakePHP等のフレームワークで実用的な「軽さ」になるのでしょうか?

たとえば「人力検索はてな」が1000万PVだとすると、
Cakeでやるのは実用的なのかどうか気になりました。

できればデータを静的に保存して
表示するごとにDBにアクセスをやりたくないのですが、
元々あるキャッシュ機能だとDBアクセスする気がするので、
規模が大きくなっていくとどうなのかな、と思って悩んでいます。

イメージ的にはMTのように静的にデータをキャッシュしておいて、
更新部分があればそれをその都度キャッシュ更新する。
そして、ページ表示はその静的データを読み込んで表示、というイメージです。

cakePHPかphpべた書きの方がいいのか、悩んでいます。
何かアドバイスを頂けると助かります。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/04/30 14:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:yandod No.7

回答回数1ベストアンサー獲得回数1

ポイント17pt

すでに多くの方が答えていらっしゃいますが、フレームワークの種類はWEBサービスの「軽さ」を決める決定的な要素ではありません。

どのようなフレームワークを利用したとしても、たとえばデータベースに過剰な負荷が掛かれば当然重くなりますし、1万程度のアクセスでも処理能力を使い切ってしまうことは考えられます。

CakePHPに関する実績についていうとfirefoxのアドオンを配信しているサイトがCakePHPで作られています。

firefoxを使っているユーザがメニューからアドオンを選択した際に接続されるという世界的なサイトです。

http://d.hatena.ne.jp/yandod/20080220/1203527772

http://puyo2.upper.jp/cake/download/confirm/cakestudy20080220_re...

詳細は資料を見て頂ければと思いますがピックアップすると・・・

  • PVは1日あたり450万
  • WEBサーバは12台、マスタDB1台、スレーブDB2台
  • キャッシュにはmemcachedを使用
  • WEBサーバ1台あたり 37.5万PV
  • 上記を月間に換算すると 1台あたり1,125万PV

上記のデータで参考になりますでしょうか。

id:onigirin

どうもありがとうございます。

firefoxのサイトにも使われていたのですね。

とても参考になり助かります。

2009/04/28 15:29:06

その他の回答6件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント18pt

時代の変化についていくスピードが重視されるWEB界で

肝心の工期が長くなっても良いのかどうか・・・

当然ながら開発コストも上がるだろうし・・・。


別にフレームワークが絶対必要とまで申しませんが

技術の蓄積による自前のシステム的なものがあるなら、いざ知らず、

これからということであれば、使っても良いのではないでしょうか。


そのフレームワークに慣れてくれば

ある程度のパフォーマンスチューニングも可能になりますし

それで足りなければ、メモリを潤沢に積んで、

アプリやDBのキャッシュがメモリ上に載るように調整するとか

考えたほうが良いかと思いますよ。

id:onigirin

どうもありがとうございます。

フレームワーク系のサイトは結構重いサイトが多いので、

なんとなく限界があるのかなーと思い、

自前でつくってみようかとちょっと考えたりし始めてました。

参考になります。

2009/04/24 01:13:38
id:hijk05 No.2

回答回数1307ベストアンサー獲得回数23

ポイント17pt

Ruby on Railsよりは軽いので、実用的な軽さにするのは可能です。

1.DBサーバーの分散

2.Webサーバーの分散

これ以外に、

たとえば、DBサーバーをMySqlからOracleに返るだけでもパフォーマンスは違いますよ。

>規模が大きくなっていくとどうなのかな、と思って悩んでいます。

規模が大きくなっていくのに、1から作るなんてどうなのかな?と思います。

>イメージ的にはMTのように静的にデータをキャッシュしておいて、

>更新部分があればそれをその都度キャッシュ更新する。

>そして、ページ表示はその静的データを読み込んで表示、というイメージです。

MTの再構築処理がその分かなり重いのですけどね。

まあ、こっちのほうがよいと思うのなら、こっちを採用すればよいと思いますよ。

ただし、最近の流行ではないのは事実ですがね。

id:onigirin

どうもありがとうございます。

フレームワーク系のサイトは結構重いサイトが多いので、

なんとなく限界があるのかなーと思い、

自前でつくってみようかとちょっと考えたりし始めてました。

ニコニコ大百科の記事を見て、自前でつくった方がよさげな気がして悩んでました。

参考になります。

2009/04/24 01:14:35
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント17pt

phpべた書き

それで改善されるとしてもせいぜい数割のレベル。所詮程度がしれている。

開発と運用保守の経費を考えればその分ハイスペックなサーバーを用意した方がいいと思う。

また、設計段階でロードバランス等に対応できるようにしておけば個々の処理が少々重くても問題ない。


たとえば「人力検索はてな」が1000万PVだとすると、

Cakeでやるのは実用的なのかどうか気になりました。

「はてな」の各サービスは「はてなフレームワーク」を使って構築されているが、

数百台のサーバーで分散処理することで対応している。


元々あるキャッシュ機能だとDBアクセスする

CakePHP に限らず、memcached とかを上手く使えばDBアクセスは減らせるはず。


作ってみて、どうしても遅い部分だけベタに対応するとかぐらいの対処で普通はいける。

id:onigirin

どうもありがとうございます。

フレームワーク系のサイトは結構重いサイトが多いので、

なんとなく限界があるのかなーと思い、

自前でつくってみようかとちょっと考えたりし始めてました。

フレームワークを使って、memcachedを使うということで

ある程度までスピードが出そうな感じですね。

参考になります。

2009/04/24 01:18:06
id:pahoo No.4

回答回数5960ベストアンサー獲得回数633

ポイント17pt

「月間PVが数百万~1000万程度のサイト」といっても、テキストだけのサイトと、画像が多いサイトでは、サーバへの負荷がまったく変わってきます。「実用的な軽さ」と言われても、一概には何とも言えません。


そもそも、そのサイトはPHPが必須なのでしょうか。

質問の文脈から推測するとDBアクセスが必要のようですが、データの追加・更新より参照の方が圧倒的に多いのであれば(たいていのWebサイトは参照の方が多い)、お気づきのように、静的コンテンツにしておいた方が軽いです。


問題は、PV数の何%がデータの追加・更新なのかということです。また、追加・更新するデータはテキストだけなのか、画像のような巨大バイナリ・データを含むのかという点も注目しなければなりません。

id:onigirin

どうもありがとうございます。

フレームワーク系のサイトは結構重いサイトが多いので、

なんとなく限界があるのかなーと思い、

自前でつくってみようかとちょっと考えたりし始めてました。

phpが一番触れているので、phpにしました。

参照がほとんどの内容なので、静的の方がいいのかな、と思ってました。

ただ、はてなダイアリーなどのように

リンク元やアクセス数のような、やや動的なものも出したいので、

どうしようか悩んでいました。

データはほぼテキストデータです。

wiki的なものも考えているので、

ニコニコ大百科の記事を見て静的にするほうがいいのかなと考えていました。

参考になります。

2009/04/24 01:24:29
id:rafin No.5

回答回数8ベストアンサー獲得回数0

ポイント17pt

はてなほどではありませんが、自作のサイトが月間数百万PVです。2サイトあるのですが、どちらも自作です。自作のフレームワークを作成しています。

理由は「カスタマイズしやすいから」です。他者が作ったフレームワークあくまで「別の人が作った」わけですから、思い通りにするのは困難です。

また、MTやOpenPNEをはじめ、オープンソースのシステムはあくまで「万人が使えるように」する為に設計しているので、自分が考える・自分が思う仕様にするのも困難です。


工期やコストの事を気にしている方も多くいらっしゃいますが、将来的な事を考えれば、自作した方が良いと思いますよ。後でトラブルになった時に、公式サイトから修正ファイルが届くまで待つわけには行きませんからね。

id:onigirin

どうもありがとうございます。

フレームワーク系のサイトは結構重いサイトが多いので、

なんとなく限界があるのかなーと思い、

自前でつくってみようかとちょっと考えたりし始めてました。

簡単なフレームワーク自作も少し考えていましたが、

既存フレームワークでのサイト構築に慣れてきた程度のレベルなので、

フレームワーク構造の理解を深めたり設計するところから考えると

相当時間がかかりそうで、やや諦めていました。

本当はそういうのが理想的なのですが・・・。

参考になります。

2009/04/24 01:28:24
id:pahoo No.6

回答回数5960ベストアンサー獲得回数633

ポイント17pt

はてなダイアリーなどのように

リンク元やアクセス数のような、やや動的なものも出したいので、

「はてなダイアリー」の場合、記事の追加・更新しないとリンクの更新も行われません。おそらく静的なコンテンツを参照しているだけではないかと。トラックバックの部分もリアルタイムで(動的に)反映されているわけでは無さそうです――もし間違っていたらご指摘ください(^_^;)


フレームワーク系のサイトは結構重いサイトが多いので

フレームワークだけの問題でしょうか。

マルチメディアコンテンツが多かったり(サーバ負荷大)、CSSやJavaScriptが複雑(クライアント負荷大)ということはありませんか?

PHPフレームワークの一種であるCakePHP経由で処理すると、素のPHPで書くより処理数が多くなるのは確かですが、よほど変なコード(例:不必要なループ処理が含まれている)にしない限り、体感で差が出てくるとはありません。ご自身で比較スクリプトをつくり、ベンチマークしてみると分かります。


また、動的にコンテンツを生成すると、ロボット検索に登録されにくくなります。SEO的にも不利です。


「データはほぼテキストデータ」ということでしたら、参照は静的コンテンツにしておき、追加・更新・削除にPHPを利用すればいいでしょう。

また、どのような処理にフレームワークを適用するのか判断するために、CakePHPの学習と実践はやっておいた方がいいでしょう。

id:onigirin

どうもありがとうございます。

OpenPNE系サイトが基本重いので、あまりいいイメージを持っていませんでした。

確かによく考えたら、普通に書いても同じ処理だとあまり変わらなさそうですね。

フレームワークを使いながら、

静的コンテンツとキャッシュをうまく使っていけば

なんとかなりそうですね。

よく似たサイトで体感速度を比べていたら

静的コンテンツよりほんの一瞬間があるのが気になって仕方ないのですが、

CSSとかそっちが原因かもしれませんね。

(フルCSSと、CSS少ししか使ってないhtmlサイト)

2009/04/27 18:29:17
id:yandod No.7

回答回数1ベストアンサー獲得回数1ここでベストアンサー

ポイント17pt

すでに多くの方が答えていらっしゃいますが、フレームワークの種類はWEBサービスの「軽さ」を決める決定的な要素ではありません。

どのようなフレームワークを利用したとしても、たとえばデータベースに過剰な負荷が掛かれば当然重くなりますし、1万程度のアクセスでも処理能力を使い切ってしまうことは考えられます。

CakePHPに関する実績についていうとfirefoxのアドオンを配信しているサイトがCakePHPで作られています。

firefoxを使っているユーザがメニューからアドオンを選択した際に接続されるという世界的なサイトです。

http://d.hatena.ne.jp/yandod/20080220/1203527772

http://puyo2.upper.jp/cake/download/confirm/cakestudy20080220_re...

詳細は資料を見て頂ければと思いますがピックアップすると・・・

  • PVは1日あたり450万
  • WEBサーバは12台、マスタDB1台、スレーブDB2台
  • キャッシュにはmemcachedを使用
  • WEBサーバ1台あたり 37.5万PV
  • 上記を月間に換算すると 1台あたり1,125万PV

上記のデータで参考になりますでしょうか。

id:onigirin

どうもありがとうございます。

firefoxのサイトにも使われていたのですね。

とても参考になり助かります。

2009/04/28 15:29:06
  • id:pahoo
    id:rafin さん、自作サイトで月間PVが数百万というのは凄いですね。
    専用サーバでしょうか。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません