M.C.P.C. (Mamesibori Creation Plus Communication)

印刷屋から五反田のWeb屋に転職したCLのブログです。

ISUCON3予選AMIイメージから初めてバックエンド側Webアプリ起動の仕方を知った

昨日公開された

オンライン予選で使用した問題が手元で再現できるAMIを公開しました : ISUCON公式Blog

のAMIをAmazon Web Service EC2に設置して中身をのぞくなど。

目的は、長年謎であった、ポストCGI時代のWebアプリケーション(Webアプリ自体がHTTPサーバとなる)を公開するとき、「誰ユーザとして稼働しているか」「物理サーバ起動時にどうやってWebアプリのサーバを起動しているか」っていうのを調査することです。

先駆者が公開してくれているblogエントリだと「テスト用Webサーバを立ち上げます」で終わっていたりして、よくわからなかった。Perl Beginnersに出席した後の交流会で聞いたところ、「daemontoolsで」と聞いたが確証が持てなかった。

で、AMIをお借りして調べたところ、

  • フロント側WebサーバのApacheは、User Apache で動いていた(当たり前、といいたいところだけれども……)
  • バックエンド側Webサーバ(公開されたAMIのデフォルトだとPerlStarman)は、User isucon で動いていた(ビルトインのアカウント使うってことではないことがわかった)
  • バックエンド側Webサーバのキックには、supervisordを使っていた(これ、YAPC::ASIA 2013でやった問題だ!)

長年の謎がやっと解けました!

今回の件で俺が得るべき教訓は、これを今所属している社でそのまま適用するとサーバの停止が誰にも出来ないということだ。

Webminの範囲でなんとかするとなると、サーバ上げるのとサーバプロセスの生存確認をするshを毎分cronで永遠にキック。。もぅマヂ無理。リスカしょ・・・