分モバイルファクトリーの松野です。どのようにチューニングしているか,という話をしたいとおもいます。Wassrはその性質から負荷が集中しやすいサイトであり,DBへの書き込み・読み込みともに大量に発生するサイトですから,かなりマメにチューニングしてやらないといけません。一方で,大量のアクセスが発生することもあります。図1のように,競合サイトのTwitterが落ちるとwassrに避難してくる人達がいますので,急激にアクセス数があがることがあります。このような場合にどのようにチューニングしていくかというのが一つの課題です。実際に,このWassrへのアクセス集中の際にはユーザタイムラインの表示停止サーバの増強という2つの方策によって,落ちないように対策しました。サーバの増強に対しては弊社では,障害対策として常にアプリケーションサーバとして使える予備サーバを何台か用意してありますので,このような対策が可能でした。ユーザタイムラインの表示停止については,一部機能の停止にあたりますので,できればやりたくないところだったのですが,アクセス数があつまるページである上に,重いクエリをmysqlに対して発行していたために遅かったので,一時的に表示を停止するという処置をとりました。Wassrのような一般ユーザのアクセスが集中するサイトでは,このような機能縮小の方策を大胆に行う必要がある場合があります(基本的にはそうならないようにチューニングしておくのがベストなのですが,そこまで手がまわらないことの方が多いでしょう)。平時のチューニングWassrのようなサイトは,基本的にサーバ負荷が高いです。これは紛れもない事実です。しても遅くなりがちですから,色々な工夫をしつつチューニングする必要があります。Devel::NYTProfとBenchmark.pmとabと基本的には,チューニングはプロファイラとベンチマークの処理の繰り返しになります。なかでも最近オススメなのがDevel::NYTProfというツールです。これはソースコードビューワの機能がついたプロファイラなので,グラフィカルな画面で,まったりとプロファイラ結果をながめることができます。遅いページの判別ウェブアプリケーションフレームワークの,ページ処理ログを見て,遅いページにはどんどん最適化をかけていきます。Wassrはページ数が多いので,こっちを速くしたら,こっちがまだ遅い,といった具合ですが,徐々に改善していっている次第です。Wassrではページの出力に3秒以上かかった場合は,ログに出力されるような仕組みがはいっています。APIを叩きすぎている人の是正Wassrは豊富なAPIを用意しているのですが,APIに大量のアクセスをかけてくる人がいないかどうか,アクセスログを監視します。アクセス数が多かったりする場合には,作者にコンタクトをとって,より効率的に処理が行えるよにうながしたり,より効率的に情報がとれるAPIを用意したりします。MapperとしてDBIx::Classを採用しています。Mapperではrelationshipをサポートしていて,随時has_aの関係にある情報をとってきてくれたりして大変便利です。一方でWassrのようなサイトとは大変相性が悪い。実は,Wassrではヒトコトの表示がそもそも重い処理になっています。ひとこと図3のような一つのヒトコトを表示するだけでも最低でも6個のテーブルが関わってきます。ヒトコトにぶらさがっているhas_a情報だけでも5個ぐらいありますから,ヒトコトごとにクエリをうっていたのでは遅くてかないません。よって,SQLのINでまとめて一回発行するなどの小細工を大量にいれています。TokyoTyrantを使うSQLでは高速におこなうことができないが,ハッシュデータベースでは高速に行うことができる部分がいくつかあります。Wassrでは平林幹雄氏によるTokyoTyrantを採用しています。イイネ!の表示はTokyoTyrantによっておこなっております。けアフィリエイトサービスの開発運用,PodCastingサービスの開発運用,ブログ広告システムの開発運用を経て,ワッサーの開発を行った。フレームワーク関連の技術に興味があり,日本で最初にRailsによるオープンソースの掲示板システムイナモデレーダー6を開発公開した。ブログはhttp://d.hatena.ne.jp/tokuhirom/など。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。