世界中の共有動画を横断検索。youku.com,youtube,tudou.com,Dailymotionに対応。・・・そんなサービスの開発者ブログ。

みんなの動画サーチ

個人メニュー
最近見た動画

サービス:みんなの動画サーチ   利用できる動画共有サイト : youku.com , youtube , tudou.com , Dailymotion

Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--------(--)

みんなの動画サーチを実例としたPHPでの開発における負荷対策について 第3回 〜想定している問題〜

 みんなの動画サーチを実例としたPHPでの開発における負荷対策について 第3回、想定している問題です。

 負荷の問題の原因はさまざまですが、よくある原因は決まっています。そのため、開発に入る前にそれらをあらかじめ想定しておくと良いでしょう。より効果的な負荷対策を考慮した開発が行えますし、実際に問題が発生した場合も対応が打ちやすいというメリットがあります。

 ではさっそく、どのような問題を想定するべきかを書いていきます。

データベースの利用の仕方に問題がある

 まず最初は、データベースの利用の仕方に問題があるというものです。
 あるある、と思われた方もいらっしゃるのではないでしょうか。とてもよくある原因なので、私は設計時にもっとも警戒するようにしています。

 大量のデータを高速に扱えるデータベースは便利です。レコード数が10000件ある中から1件のレコードを0.0005秒で読み込んでのけますが、これは10000行のファイルから読み込んでいたとしたらありえない数字です。
 ですが、便利なために多用しすぎたり、あるいはデータベースの設計を誤ったりといった原因により、ここが遅さの原因になることがよくあるのです。
 あまりに過負荷がひどいとデータベースがダウンしてシステムが停止することすらあるので要注意です。

 また、運用開始時は大丈夫でも、運用していくうちにデータがたまって問題を引き起こすことがあります。これも注意が必要です。

 どのような対策が必要になるかは別途専用の章を設けますのでそちらをご覧ください。

WEB APIが遅い

 これはマッシュアップサイト系のみに当てはまる事項です。(みんなの動画サーチマッシュアップサイトなので当てはまります)
 WEB APIはかなり処理時間を食います。そのため、WEB APIを多用しているページは遅くなりがちです。すぐれたインフラを持つ大規模サービスのWEB APIでも油断は禁物、1ページに2つ、3つと使えばまず応答時間の問題が発生します。
 外部の問題なので、こちらが管理できることはあまりありません。
 私が複数のWEB APIを使う場合、AJAXをはさむことで処理をわけることが多いのですが、それはこの遅さが理由の一つです。

運用に問題がある

 キャッシュファイルが貯まりっぱなしになっている、ログのローテーションができていない、長期間VACUUMをしていないPOSTGRESQLを運用している、といった、問題のある運用を行っているケースです。運用開始時は動くので最初は問題がないのですが、時限爆弾と同じで、いつか爆発します。
 ちなみにこれらは全部実例です。私がやったこともあれば、他人がやったのを見た/聞いたこともあります。
 対策としては、運用マニュアルをしっかり策定してそのとおり実行する、ということにつきます。
 運用マニュアルを作成していない場合は要注意。やりがちです。

回線がボトルネックになっている

 必要な帯域と比べて利用している回線が細すぎるケースです。
 画像や動画、ZIPなどの重いファイルを取り扱う場合は特に注意が必要です。また、WEB APIを多用する場合も応答が遅れるため問題になります。

 回線を高速なものに変えるか、もしくは回線を多重化することが必要になります。

ハードディスクI/Oが遅い

 ハードディスクのI/Oが原因で遅いというものです。キャッシュの利用などによりディレクトリ内にファイルが大量に格納される、出力ファイルが大きい/多い、といった場合に問題になりやすいケースです。 
 適切なディレクトリ設計、出力の定時パッチ処理化などが必要になります。場合によってはハードディスクのRAID1+0やRAID5の採用や、ATAタイプを使っているならSCSIタイプのものにするなどハードウェア的な対処も行います。

メモリが不足している

 一度にAPACHEで大量のユーザーをこなしている、データベースが巨大、もとからメモリが少なすぎる、といった原因でメモリが足りていないケースです。たいていメモリを増やすことになりますが、異常なループがあるといった処理自体に問題があることがたまにあり、その場合はそちらを修正しなければなりません。

CPUがボトルネックになっている

 大量のプロセスを走らせている、巨大なデータを処理する、ffmpegなど高い負荷がかかる処理をバックで走らせている、といった原因により、CPUの処理速度が追い付いていないケースです。処理内容そのものを変更するか、数量を制限するか、そうでなければCPUやサーバーを増設する必要があります。

サーバーが故障しかけている

 これはPHPでの開発というよりはサーバーの運用にあたるテーマですが、機器の故障が原因で応答速度が悪化することもあります。そんなこともある、とは覚えておいたほうがいいでしょう。よくあるのはHDDの故障ですが、NICなどこまかい部品の故障もたまにあるようです。サーバーではなくネットワーク構成機器、たとえばHUBやルータの故障が原因になるケースもあります。

みんなの動画サーチが警戒している点

 上記はすべてみんなの動画サーチでも起こりえるのですが、これらの中でも特に警戒しているのは、
1)データベース接続
2)ハードディスクI/O
3)WEB APIを使った外部接続
 です。そのため、開発はこの3点への対策を考えながら行いました。

tag : php 負荷対策 みんなの動画サーチ マッシュアップ

2008-04-03(Thu)

 みんなの動画サーチ 現在の人気動画

RSSフィード
最近の記事
月別アーカイブ
カテゴリー
逆アクセスランキング
プロフィール

Author:ナカタツ
 共有動画サーチの開発をやっているフリーランサーです。プログラム歴は趣味で使っていた頃も合わせるとちょうど今年で10年目。最近はPHPばかり使ってます。
 私に興味を持ってくださる方はお気軽にご連絡ください。Skypeでお話できる人歓迎。メールフォームはこちら

カレンダー
10 | 2009/11 | 12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -

みんなの動画サーチへ戻る

カテゴリ:芸能・テレビ | 音楽 | アニメ | おもしろ | 神・衝撃 | ゲーム | 動物 | スポーツ | 時事ニュース | 自然・歴史 | 車・バイク | セクシー


アクセス解析 アクセスランキング
  • seo

Powered by FC2 Blog

FC2Ad

FC2ブログ

Copyright © みんなの動画サーチ開発者ブログ All Rights Reserved.