「ISHOCON2大会@ギークハウス沖縄」に参加した!!【Ruby】
感想
geekhouse-okinawa.connpass.com
師匠であるid:saboyutaka氏がギークハウス沖縄でISHOCON2をやる会を開催してくれたので参加してきました。
とても楽しかったです。ありがとうございました。
また、ISHOCONの創始者であるid:showwin氏にも大感謝です。AMIが公開されていたので環境構築がとてもラクでした。
github.com
このマニュアルに沿ってやれば、簡単にイメージ、ベンチ共にインスタンスを立てて用意された言語の実装でスコアを出せます。
今までISUCONの過去問等をやった中で、もっともスムーズに競技を始められた気がします!
やったこと
MySQLのチューニングなど
Ruby実装で挑みました。初期スコアは2316でした。
いつも通りツールのインストールを済ませてから、レギュレーションを読んで、マシンスペックやサーバーの構成を確認していきました。
htopで確認したところ、MySQLのメモリ使用率が高かったので、クエリの改善を試みました。
DBのdumpファイルを作成し、ローカル環境に持ってきたものはもちろん、リモートののサーバーで動くDBにもSequel Proからスムーズに繋いでGUIで操作することが出来ました。
最近はチームでは一応アプリ担当だったので、久しぶりにやることが多かった気がします。
しかし、最近DB周りのエラーが多かったのですが、今回は逆でした。
この辺でスコアは10000点でした。
MySQLのチューニング次第でもっとスコアは伸びていたと思います。
Nginxやredisのチューニング,,,のはずだった
完全に技術不足でした。nginx.confの設定やUnicornのワーカー数をいじった程度でした。Ruby実装はここからが本番だったみたいです。
Go実装に切り替えたら20000点出た
Go実装は初期スコアは7000くらいだというのを聞いていたので、もうこの際1人だし全然知らないけどGoやってみるかーと思ってGo実装にした。
Goは並列処理に強いというのも聞いたことがあった(常識?)ので、Go実装にしてベンチマーカーのWorkload数を130くらいに設定してベンチを回したところ20162点出ました。
まとめ
本番直前だけど、redisを使えるようになってオンメモリ戦略取れるようにしたい。
nginxのチューニングはインフラ担当に任せたい。
※オンメモリ戦略: RDB上のデータを正としてプロセスメモリ上のデータをキャッシュとしてのみ利用するのではなく、プロセスメモリ上のデータを正として、RDBは永続化のためだけに使う(もしくはRDBを捨てて別の永続化手段を取る)