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のデフォルトだとPerlのStarman)は、User isucon で動いていた(ビルトインのアカウント使うってことではないことがわかった)
- バックエンド側Webサーバのキックには、supervisordを使っていた(これ、YAPC::ASIA 2013でやった問題だ!)
長年の謎がやっと解けました!
今回の件で俺が得るべき教訓は、これを今所属している社でそのまま適用するとサーバの停止が誰にも出来ないということだ。
Webminの範囲でなんとかするとなると、サーバ上げるのとサーバプロセスの生存確認をするshを毎分cronで永遠にキック。。もぅマヂ無理。リスカしょ・・・