ISUCON12予選の参加記
こんにちは、akitoです。
team: using namespace std;
で参加しました。(5・7・5) (members: hidollara, sh4869)
誰と出ようかな〜と思っていたのですが、二人ともお誘いしたら快く参加を決めてくれて感謝です。
本記事では、ISUCON12予選の高速化のために行った手順についてのメモを残します。
事前準備
使用したミドルウェア・コマンドの類は以下のとおりです。 資料やOSSなどの著作物を公開してくださった皆様に感謝します。:bow:
- alp
- いい感じにアクセスログを集計して解析するツール
- pt-query-digest
- MySQLのクエリを集計して解析するツール
- kaz/pprotein
- さくらのクラウド上に立てて使用しました
- 今回はさくらインターネットが配布してくださったクーポンのおかげで値段を気にせず建てることができました。
- さくらインターネットさん、ありがとうございます!
- ログを集計し、ブラウザ上で確認できるようにする全部入りツールです
- めちゃくちゃ便利でした。
- (当日の問題ではSQLiteを使う箇所があったため、その部分はサーバのコンソール上で確認しました)
- さくらのクラウド上に立てて使用しました
- Discord
- はい
当日
役割分担
メインの役回りは以下のとおりです。
自分はほとんど点数に貢献できなかったので、本当に感謝です。
- akito: インフラ・設定周り(logとかDB分割とか)
- hidollara: アプリケーション周り(キャッシュとかIndexとか)
- sh4869: アプリケーション周り(N+1とかbulk insertとか)
サーバ構成
最終的な構成は、以下のとおりです。
全体の時系列
- 10:00~
- マニュアルを読み
- git push
- deploy用のMakefileの作成
- pproteinの設定の有効化
- (2717点)初回ベンチ
- 12:00~
- 13:30~
- 16:00~(この辺からメモが怪しい)
- JWTKeyをメモリ上にキャッシュ
- RankingのN+1の解消
- middleware類のチューニング
- max connection とか file limit とか
- 17:00~
- 再起動試験
- app×2構成にするか検討するが、実装が間に合うか&可能なのか がわからず、断念
"write tcp 127.0.0.1:3000->127.0.0.1:38182: write: broken pipe"
みたいなログが出ており、減点されていたが、原因が解明できず終了- logの停止
- お祈りフェーズ
やりたかったこと
- JSONログの停止
- 忘れてた
- 3台目をDBサーバとして使う
- error: broken pipe の解消
おわりに
SQLiteに面食らってしまいましたが、とても面白い問題でした。 エラーの解消ができなかったのが心残りです。
再起動試験は通っているんでしょうか...
インフラ面で強くなりたい(願望)。