Fusic 平田です。
会社で「ISUCONがんばる」って言っちゃったので、仕事の合間をぬってITインフラ勉強会に参加してきました。
fukinfra.doorkeeper.jp/events/5367
他の方のエントリは以下。
第6回ITインフラ勉強会@福岡に参加してきました。 – 肉まん始めました
【福岡】インフラ勉強会で ISUCON を疑似体験してきました。 – komiyakの通り道
第6回 ITインフラ勉強会@福岡 (ISUCON夏期講習のAMIで、もくもくチューニング)を開催しました – まつざきの技術メモ
1時間ほど遅刻して着いてみたら既に2チームのvsが進行していたので、ひとりチームでもくもくチューニングしてましたすみませんすみませんすみません。
以下ざっくりやったこと。
・HeigiSQLでexplain結果眺めながら、MySQLのインデックスをぺたぺた
・ログとdstatの結果を流しつつ各ページの動きを確認
・/ticket/の描画とソースみてこりゃ重いなーと思って、普段使ってるとおりvarnishを突っ込む
vclは↓くらいで、単にpost来たらキャッシュ消すくらいで。
※ リクエスト眺めていたらpostが連続で来てたりもしていたので、キャッシュの運用についてはもっと賢いやり方があるだろうなーと思いつつ。
backend default { .host = "127.0.0.1"; .port = "6000"; } sub vcl_recv { if (req.request == "POST") { ban("req.url ~ /"); return (pass); } elseif (req.request != "GET") { return (pass); } else { return (lookup); } } |
・dstatで見る限りアプリ側に余裕が見られたので、starmanのworkerを30まで増やす
・メモリよりI/Oのほうがきつそうだったので、varnishのキャッシュ先をファイルからメモリに変更
→ /etc/sysconfig/varnish内で「VARNISH_STORAGE=”malloc,4G”」と変更
・たまに計測がこけて、理由が/admin/order.csvのデータの中身の不整合だったので、order.csvへのリクエストはキャッシュしないよう変更
・POSTをもっとさばくために、/admin/set_cacheという別アクションでキャッシュ作ったのち、/buyの処理をキャッシュで軽減できるように修正
→ の途上で時間切れ
とあいなりました。
で、結果としては
とスコア11万程度までは減りました。
計測具合からvarnish導入で一気にスコア減るだろうなーというのは予測通りでしたが、DBのチューニング具合やアプリ改修具合については全然足りていなかったですね。
計測する→どうする、の「どうする」武器をいろいろ持っておかねば、というのが喫緊の課題です。
参加していた方々の話を聞いていると
・MySQLのチューニングをカリカリやっていた方
・カーネルパラメータなど見直していた方
・Webサーバの入れ替え検討とか、検討はともかくApache入れるぜ!とか
などと、やっぱり人によって狙いが違うなーというのが面白かったです。
で、第3回ISUCONの予選が10/5,10/6と決まりまして。
さっそくFulab(Fusic x nulab)なチームで登録しております。
isucon2013.kayac.com/qualifier_round/2
参加される方々が(自チームの他お二人含め)非常に強力でどうしたもんかとプルプルしておりますが、どうか皆様お手柔らかにお願いいたします。。。