本番のアクシデントをインフラ・チームが鎮火

 「2号機,もうだめです」---生放送開始から間もなく,サーバーのスワップ(メモリー内容のディスクへの退避と回復)が頻発し出した。なんらかの処理が,サーバーのメモリーを食いつぶし始めたのだ。「サーバー全体が重くなり,コメント表示ができなくなった」(杉谷氏)テストを繰り返してきたものの,ニコニコ市場など周辺サービスまで含め1万人同時接続の負荷を完全に再現するには限界があった。「今まで見えなかった問題が噴出した」(杉谷氏)。

 この時発生した現象は以下のようなものだった。高負荷のため顕在化したアプリケーションのバグにより,データをメモリー上に蓄えていたmemcachedが肥大化し,メモリーを圧迫した。これによりWebサーバーからMySQLへの接続が頻繁に失敗するようになった。MySQLは10回接続に失敗すると,ロックがかかりそのサーバーからの接続を一切停止するようになっていた。これによりWebサーバー1台,全く機能しなくなった。機能しなくなったWebサーバーは切り離されたことで「残りのサーバーに負荷が集中し悲鳴を上げた」。一時期は,多くのユーザーのブラウザ上に何も表示されない状況になった。

 この事態を解決したのは,ドワンゴのインフラチームだった。すぐさま負荷の高い処理を調べ,データセンターで埃をかぶっていたマシンを生放送に投入。memcachedサーバーとして動作させ延焼を防いだ。データベースの状態を確認,データベースのロックを解除した。

 放送開始から1時間10分を過ぎた頃,生放送は正常に回復した。「新しいプレーヤーでは,いったん配信が途切れても,再接続できる機能を追加した」ことで,配信システムの復帰とともに多くのユーザーのブラウザに映像が表示され始めた。この日の同時配信数は,当初の予定通り1万人を記録した。

「数万人,数十万人の生放送を目指す」

 千野氏は「1万人はもう問題ない。今後は数万人,数十万人の生放送を目指す」と意気込む。「動画配信システムは1000人の頃からサーバーの増設以外は何も手を加えていない。数万人も十分できる」(糸柳氏)。杉谷氏は「(コメントを受け付けて配信する)メッセージ・サーバーもシステム的には問題ない。ただ膨大な数になったコメントを,どうすれば画面上で見やすくできるかが課題になる」という。ドワンゴ ニコニコ事業本部の設楽泰智氏は「ニコニコでしかできない,1万人が一体感を感じられる生放送にしたい」と夢を描く。

 ドワンゴは,ニコニコ動画のプレイヤーとメッセージ・サーバーを実質3日で開発している(関連記事)。動画配信システムSMILEVIDEOも1週間で開発したという(関連記事)。1日あたり動画再生回数は2000万を超え,コメント数も1日300万を超える。

 その同社にして生放送にこれほど手こずったのは,現実の負荷とクライアントの挙動を再現したテストが極めて困難だったためだ。しかし,それまで未知の領域だった1万人への生放送は,ユーザーが参加したイベントを経て,実証済みのインフラとなった。

 それまで存在しなかったシステムが,サービスが生まれ,当たり前の存在となり,円滑に動きいているその裏側には,それを作り,支える技術者の奮闘がある。この記事でそのことを改めて感じていただけたとすれば,記者はとても嬉しい。

ニコニコ生放送開発チーム
ニコニコ生放送開発チーム
[画像のクリックで拡大表示]