oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

#ISUCON で見事名誉返上、汚名挽回しました!

@oinume、@la_luna_azul と一緒に10/5 一日目に参加しました。結果はタイトル通り見事惨敗です!
全体の詳細は@oinumeが書いたブログが詳しくまとめてくれているのでそちらで。
#isucon の予選に出場して惨敗してきた( ー`дー´)キリッ

僕はデータストア担当、それにくわえてデプロイとかベンチ走らせたりとかモニタリングとかサーバオペレーション全部というか雑用という事でとりあえずやった事とかをつらつらと書きます。

・AMIを自分のアカウントで起動させようとしたらいつまで待ってもAMIのリストが出てこなくてJsonほげほげとかいうエラーで見れない
・しょうがないので、@la_luna_azul に頼んで僕の分のインスタンスを作ってもらう。インスタンスご馳走さまです。
・とりあえず公式に言われた通りREADME読む。supervisordの設定見る。
・当初からメンバーが得意なpythonで行こうという事なので起動方法とか切り替え確認
・ひと通り動いているプロセスとか分かったので、Ver確認。
・担当のMySQLをチェック。/etc/my.cnf無かったので、普段使っている奴をコピペしてログとか出す。
・5.6なので/usr/my.cnfの中身を見る。何も無かったので罠は無し。
・必要そうな管理系パッケージとか入れる。
・しょっぱなのベンチを掛けながらソースを読み出す。合わせてMySQL側のログ見て@la_luna_azul からmysqldumpslowを取ってーと言われて慌てて見だす。
・ソース見るとSQLベタ書きだったので、grepして全部のSQLを抜き出し+スキーマチェック
・/var/lib/mysql配下を眺め、ファイルサイズが小さい事からinnodb_buffer_poolとかはあんまり過敏に考えなくて良いかと思う。
・@la_luna_azulからmemcachedポートでMySQLがLISTENしてね?と指摘受け確認するとアプリ側でそっち向けていたので割りと早い段階でここはmemcachedを見るように修正
SQL単体で見てindex使っていない奴とかをindex足したりとか修正。でも、そもそも投げる必要無いやつとかを削ったりとか出来ていなかった。木を見て森を見ずですな・・・。
・ユーザーの全件データ取りに行っているけど、これ件数少ないし毎回SQL発行していて無駄と伝え、@oinumeがそこキャッシュに入れるーとなる。
・memosの全件countしている奴とかはmemcachedでカウンターに出来るんじゃね、と話す。じゃあオレ書くはと@la_luna_azul が担当
・その間ベンチの結果とかを見ていた@oinumeがマークダウンの所もヤバイから直すーとなる。
・ベンチ回してはhtopとslow-logとapacheログの件数とか遅い所とか見る。
・段々とMySQL単体でいじってはスコア上がらなくなって来た。また自分でもソース見だす。
・キャッシュ追加Verをデプロイして、改めてinnotopとか見る。クエリ1/4くらいに減った。でもまだMySQLのCPU高い・・・。
・一旦設定をしてくれたnginxの方をオレも確認するーと見だす。細かいパラメータを修正したり。
・改めてベンチ回すけど、あんまり変わらず(´Д`)
・そうこうしていると急に他のチームのスコアが跳ね上がりだす。
・一度ログとか不要な処理を全部切る作業に入る。
・対して変わらねー><
・そうこうしていると時間無くなってきた。もうテンパっている。
ミドルウェアの設定見落としやうっかりミスが無いかを再確認する。
・駄目だ。分からん。その間にも上がる他チームのスコア。さっきまでは10位くらいは見えかけていたのに・・・。
・僕はもうこの頃は元のソースと二人が改修している部分の差分がすぐ分からない状態になっていて、戦力にならないまずい状況だった。ちゃんとどういう変更したかとか追っていないとダメ。
・あああ・・・・終わる・・・(´・ω:;.:…
・\(^o^)/

という、時間での焦りとかはほんと言い訳で、地力がほんと出たなぁ・・・って感じでした。

終わった後の反省会では酒が進みました。獺祭やっぱり美味しいですね。

反省点は基礎力とかそもそもって所もあるけど、やっぱりボトルネックに対してのアプローチがまずく、各々の担当でとりあえず目についた所やまずは確実に直せそうな所に時間を無駄に使ってしまい、本当に重要な所に力を使っていなかったのが一番だったかな・・・。優先順位を付けたら後回しにして良い所を制限時間のプレッシャーで「そこに手を付けたらギリギリかもしれないから見積もり出来る所をやろう」という間違った方向に行った気がします。

ただ、次回ISUCONがあったらまたこのメンバーでリトライしよう!と全員ベロベロになりながら誓いました。

そんなこんなで初ISUCONは楽しかったです!主催のみなさまお疲れ様でした!