図1●ハードを増強してもアクセス増ですぐに追いつかれる
2002年12月にサービスを提供開始してからアクセス数は順調に増え,2003年4月には開始当初の約6倍になった。2003年4月末にDBサーバーのマシンを置き換えて処理性能を強化したが,効果は長持ちしなかった。アクセス増が続き,翌月には別の対策を考えなければならなくなった
図2●DBサーバーの負荷を減らすために実施したチューニング
(1)DBのインデックスの見直し,(2)DB側で実施していた処理をPHPアプリケーション側の処理に変更する,(3)無駄なクエリーを減らす,(4)動的なWebページの静的化――などを実施していった。しかし,これらのチューニングを施しても,アクセス増が続いてすぐに厳しい状況になった
 携帯電話向け着信メロディの有償ダウンロード・サービスなどを提供するレーベルモバイルでは,2003年春から夏にかけ,毎月増え続けるアクセスに悩まされていた。予想を大幅に上回るアクセス増で,「当初,2003年10月ごろに予想していたアクセス数を半年前の3~4月の時点で達成してしまった」(システム部 浅沼剛之氏)。

 できるだけコストを最小限に抑えながら,急増するアクセスに対処していかなければならない。しかし,DBサーバーのマシンを置き換えたり,アプリケーションをチューニングしたりしても,アクセス増で処理性能がすぐに頭打ちになってしまった。最終的にキャッシュ・サーバーを2003年7月末に導入して解決した。

ハードを替えても長持ちしない

 同社は「lmelo.net」と呼ぶWebサイトで,auの携帯電話端末を対象としたいわゆる「着うた」のダウンロード・サービスを提供している。ApacheとPHPで構築したWeb/APサーバーが2台,Sybase Adaptive Server Enterpriseを搭載したDBサーバーが1台の構成で,2002年12月から提供を開始した。当時は「着うた」を利用できる端末が少なかったこともあり,この構成で十分だった。

 しかしその後,端末の利用者が増え,アクセス増の対処に毎月悩まされることになる。2003年3月はサービス開始当初の約4.6倍,4月には約6倍のアクセス数になった。アクセス増に備えて4月末にDBサーバーのマシンを置き換えたが,効果は長持ちしなかった(図1[拡大表示])。アクセス増は続き,翌月には別の対策を考えなければならなくなった。

 とはいえ,「アクセス数の増加に合わせて,高価なサーバーを導入していくわけにはいかない。ハードウエアのスペックを次々に上げていくと,アクセス増で得られる収益以上にコストがかかる。いずれにしても,アクセス数と競争するとコストがかかるのは目に見えていた」(テクニカルスーパーバイザー 牧野一憲氏)。

チューニングで2カ月しのぐ

 そこで実施した対策が,データベースまわりのチューニングである。というのも,ユーザーは「楽曲を検索→紹介ページを表示→ダウンロード」という操作が中心になる。検索はもちろん,ダウンロードする前に表示する紹介ページもWebアプリケーションで動的に生成しているため,DBサーバーに負荷が集中していたからだ。

 DBサーバーの負荷を低減するために実施したのは,(1)DBのインデックスの見直し,(2)DB側で実施していた処理をPHPアプリケーション側の処理に変更する,(3)無駄なクエリーを減らす,(4)動的なWebページの静的化――などである(次ページの図2[拡大表示])。

 (1)は見直した結果,ほとんど問題なかった。(2)は,DB側で行っているソートやジョインなどの処理を,PHPアプリケーション側で処理するというもの。「結局はDBサーバーに負荷をかけるか,Webサーバーに負荷をかけるかのどちらかの選択になる。Webサーバー側にできるだけ処理をもっていった」(牧野氏)。(3)は,無駄なクエリーを減らしていき,最終的に約5%のクエリーを削減した。

 (4)は,Webアプリケーションで動的にページを生成するのをやめ,あらかじめHTMLページとして作成しておく方法。2003年4月末から5月にかけて負荷テストを実施し,負荷の高い動的ページを静的化した。具体的には,「アクセス・ログで調べたページごとのアクセス数」と「負荷テストで得たレスポンス・タイム」の積を計算し,値の大きいページから順に静的化を検討していった。

 作業工数の問題もあり,これらの作業は7月前半までかけて少しずつ取りかかっていった。こうした苦労の甲斐もあり,5月と6月は無事に乗り切ることができた。


(榊原 康=sakakiba@nikkeibp.co.jp)