Talk

都市伝説バスターズ「WebアプリのボトルネックはDBだから言語の性能は関係ない」

性能は重要です。性能とは機能です。性能とは競争力です。

Webアプリケーションの性能改善に取り組む際、最初に槍玉に上がるのはデータベース(SQL)の待ちに代表されるI/Oでしょう。これに手を入れることで大きな性能改善を得られることは少なくありません。

では、I/Oではない部分 ―Railsの処理、Rackサーバー、あるいはRuby自体の性能― は十分無視できるのでしょうか。答えは「否」。プロファイルであからさまなボトルネックとして表出しない、CPUによる処理の部分にも大きな宝が眠っています。

これは何も性能を最後の一滴まで絞り出す話や、Ruby/Railsにパッチを送ろうという話ではありません。CPU timeとI/O timeの関係の理解は、Pumaに代表されるマルチスレッドなサーバーを使いこなす上でも大変重要です。スレッド数は重要なパラメータですが、これを当て推量に頼らず調整するためには何を観察すれば良いのでしょう?

実は日常の開発に影響している、Rubyやフレームワークの性能設計を探求しましょう。「ボトルネックつぶし」ではない方法で性能を改善し、都市伝説をバスティングする様子をお見せします。

Speaker

Daisuke Aritomo (osyoyu) osyoyu のGithubページ

パソコンおたく。株式会社スマートバンク勤務。Rubyプロファイラ "Pf2" の開発者。

Daisuke Aritomo (osyoyu)のアバター画像