アプリケーションをもっと速くこんなストーリーを考えてみます。あなたは,Railsを学び,アプリケーションを作成し,サービスをインターネットに公開しました。すると,最初のユーザができます。あなたはとてもハッピーです。するうちにユーザが二人増え,十人になり,百人になりました。あなたはハッピーです,ユーザーもみんなハッピーです。ユーザが千人になり,一万人になり...。いった場合,何が起こるでしょうか?そこで起こるのはアプリケーションへの同時接続数増加によるサービス提供速度の低下です。ユーザ数が一万人を越えてしまうWebサーバに特有の問題は,C10K問題として知られています。それでなくとも,残念ながらRailsは同様他種フレームワークと比べて,単位時間あたりの処理量が低いことで知られています。その理由は,RailsではRubyが遅くて,NativeThreadに対応できず,ERbが遅くて,Helperが遅くて,Routingが遅い。Mesh)といったものがあります。最初の,別の言語で書き直す。これもよくある決断です。LispからPhytonに書き直しました。RailsからPHPやJavaに乗り換えるという噂は事あるごとに流布されます。Computerにまかせてしまう」というのは今後のトレンドになりそうです。Computerの利用が一般化した場合,現在のWeb技術者が持っている,サーバ側のDB,ネットワーク,IOのチューニングの知識のいくらかは陳腐化してしまうでしょう。ここではそういった決断をふみとどまって,現状の環境でもうちょっとがんばってみよう,という場合の,Railsアプリケーションのパフォーマンス測定・改善法について考えていきたいと思います。optimizing~Railsを計測しようRailsアプリケーションが遅い!からといって,闇雲に最適化を開始するのはあまりおすすめできません。アプリケーションの最適化に入る前に,さまざまな視点から"計測"が必要になります。Rubyコードの計測:ruby-prof当然ながらRailsアプリケーションは,Rubyで出来ています。Rubyの性能を測定するための事実上標準のprofilerがruby-profです。それでは,ruby-profの使用法について解説したいと思います。ruby-profileはgemパッケージとして提供されています。gemコマンドでインストールを行います。ruby-prof次に,インストールされたパッケージの,ruby-prof/rails_plugin/ruby-profを,Railsアプリケーションフォルダのvendors/pluginsにコピーし,pluginとしてインストールします。vendor/plugins次に,コピーしたruby-prof/lib/profiling.rbを以下のようにコメントアウト,コメント除去します。endここまで設定した段階で,ruby-profが有効になります。railsサーバを起動します。script/server起動した,サーバに対するアクセス結果がlog/callgrind.outとして出力されます。出力されたcallgrindを閲覧するためのビューワがKCachegrindです。Linux系のディストリビューションに対してはパッケージが提供されていますが,それ以外のOSについてはソースコードでの提供になります。そのためインストール手順については省略します。KCachegrindを実行してみます。log/callgrind.out以下が実行例です。KCachegrind実行例ruby-profとKCachegrindによってボトルネックが可視化されました。プログラムを高速化する(その2)」等が参考になります。Rails著者プロフィール鎌田達哉(かまだたつや)SI企業勤務。10年ほど前にはじめて自分で行ったプログラミングはRubyによるものであったが,語ってもにわかには信じてもらえないような紆余曲折を経て現在に至る。現在は,JVM上の言語実装に興味あり。ありがちですが,Scalaにはまり中。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。