こんにちは、@acidlemon です。
ざっくりと書いたつもりなのに長編です。
本エントリでは、スコアがなかなか伸びなかった方々を主な対象として、実際に先週末実施した予選問題を解いていく方法を解説します。高スコアをたたき出した方々は参考までに「こんなやりかたでもここまでスコア伸びるんだなー」という感じで読んでください。
最初の方針は「派手なことをしない」「コンサバにやる」です。「とりあえず」という気持ちでmemcachedやRedis、もしくはvarnishやnginxでキャッシュし始めるとキャッシュの寿命のことを考え始めなければならず、疑心暗鬼になったりして難易度が上がります。まぁその辺は最終的には男気によって解決するものなのですが、その要素を排除したままできるだけスコアを上げてみましょう。
日曜夜よりアップされたみなさんの感想エントリなども拝見しており、やっぱオンメモリに置くのは速いよなぁなどいろいろな感想をもちました。しかし、もともとリアルISUCONをたくさん経験されている方の中には「それたしかにすごいけど実運用のサービスではちょっとできないよね…」といった感想をお持ちの方もいるかと思います。とりあえずRedisに全部データおいてみるとか、アプリのオンメモリにデータをため込むといったことをせず、堅実にスコアを上げていく方法を以下で解説していきます。
ミドルウェアやアプリのムダ処理排除
openrestyかnginxのインストール
今回はとくにnginxに関する罠がなかったので最初から入れ替えて問題を感じた方はいなかったのではないでしょうか。予選用AMIに最初から入ってるnginxは普通のnginxなのでLuaは使えません。もしLuaが使いたいならopenrestyをダウンロードしてきて自分でインストールするのが楽です。その場合でも設定ファイルはそのまま使えますので、最初は標準のnginxでスコア上げを行い、どうしてもダメならopenrestyに入れ替えてsupervisordに以下のような感じの設定を書き加えればよいですね。[program:nginx] directory=/usr/local/openresty/nginx command=/usr/local/openresty/nginx/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf user=root redirect_stderr=true stdout_logfile=/tmp/nginx.log autostart=true
