大規模サイトの性能改善作業とは、どういうものなのか。リクルートの中古車情報サイト「カーセンサーnet」を全面リニューアルした体験を基に、その実態をレポートする。新システムはオープン2カ月前の時点で、目標性能に遠く及ばないことが判明。最終的に、Linuxカーネルのある処理方式が性能劣化の原因だと分かった。

 「ブラウザーの表示に10秒もかかる。処理できるアクセス件数も全然足りない。これでは話にならない」――。

 2010年夏。中古車情報サイト「カーセンサーnet」の全面リニューアルで、性能検証を担当していた私はあぜんとした。リニューアルオープンを間近に控えながら、新システムの性能が遅すぎることが判明したのだ。

 そこから私の2カ月にわたる苦闘が始まった。検証作業は連日深夜まで続き、性能試験の実施回数は約100回に及んだ。その中で、性能が出ない理由が一つひとつ判明していった。ファイル共有システム「NFS」の設定、Webサーバー「Apache」のパラメーター、PHPアプリケーションのキャッシュ設定など。修正によって性能は改善していったが、それでも目標には届かない。

 手を尽くした結果、Linuxカーネルのソースコードまで調査することになった。そして、ようやく見つけた。LinuxカーネルのNFS関連のコードに性能劣化の原因が潜んでいたのだ。回避策を施すと、性能は劇的に改善した(図1)。

図1●「カーセンサーnet」のリニューアルで実施した性能改善策
図1●「カーセンサーnet」のリニューアルで実施した性能改善策
[画像のクリックで拡大表示]

 私が勤務するリクルートでは、仕事探し、住宅、旅行、グルメなど数多くの大規模サイトを運営している。どれも機能が複雑化し、アクセスが増えるにつれ、性能関連のトラブルが増えてきていた。そこで2010年4月、私の属する性能検証チームが組織された。今回の連載では、カーセンサーnetのリニューアルで、我々がどのように性能問題を解決したかをレポートしたい。

3年目の若手に任された

 私は今回のリニューアルで、性能検証のリーダーになったのだが、実は新卒3年目の若手である。リクルートの情報システム部門への配属以来、担当はずっとシステムインフラ。社内で「LinuxOS勉強会」などを主催してきた。好奇心と負けん気の強さだけは自信がある。

 とはいえ経験不足は否めない。それぞれ得意な技術分野を持つチームのメンバーと協力しながら、絶対に目標を達成してやると決意していた。開発チームが作った新システムの性能を検証し、チューニングを施すのだ。