mikiのブログ

日々のこととか、趣味のこととか

ISCON12の参加記録

ここ3年ほど、毎年ISUCONに出てみる!をやっております。

いうて、何を出来るわけでもないけどお祭り的に手を動かしたり楽しいですね。

チーム「あかべこ」で、最終的に予選は74位。昨年211位だったので飛躍しましたねぇ。

言語:

Python

本当はgoとかrustの方がいいのは分かってるんですが、ML関連なメンバだったりして毎年Pythonを選んでは、終わった後に来年こそは言語を変えよう!と言っていて成長がないです。

当日の動き:

覚えているままに書くと

午前中:

・そのままベンチ走らせる

・エンドポイントのresponseタイム、件数など確認

ソースコードを読んでロジック見てみる

・DBがsqlitemysqlになってるあたりに気が付く

~14時くらいまで:

sqliteのものをとりあえずmysql持ってこないとスケールアウトできないということで、移行を決断して実行。結果的にこれだけだと遅いままで、むしろscore下がってた。

・ロジック見まわして無駄に何度もクエリ打ってる個所の修正

mysql周りの設定見直してみる

・cacheできそうな個所をしてみる

この辺までやって、mysql移行後よりは少し早くなった気がした。

~17時くらいまで:

・Web Serverを冗長化。これが一番効いた。何となく1万点超えたので満足してしまった。

・細かいところいくつか直す。

最後の1時間:

・もう一か所直したいところがあって、ギリギリまで頑張るが間に合わなそうなので再起動試験とか、ベンチ用のログ出す個所などを削除。

 

感想とか:

メンバー的には、

・AppレイヤからInfra周りまで出来る

・ある程度Appレイヤも出来る

・コード書くのは厳しいがロジック読むのとSQLは書ける(←私

みたいな感じで、私はネックになってるエンドポイントのコード見て無駄クエリ探して、1本のクエリに直す作業してました。

後は、ロジック見て明らかに使わないデータなどの削除をしておいて初期化を早くするとかその辺の提案とかしたり。

ここのところコード書いて無さ過ぎて、Pythonですら危ないので、たまにはコード書かないとなぁ。。。

ということで、来年に向けてgoにでも入門しようと思います。