ISUCON10本戦参加記RTAのはず...

こんばんはyapattaです

今日ISUCON10の本戦に参加してきました〜, 8時間あっという間でしたね.

チーム名は「ワンランク上のジロリアン」です!

チームメイトはISUCON予選と同じ優秀な彼らです!

twitter.com

twitter.com

では実際に何をやったか書いていきたいと思います!!!!!

やったこと

  1. nginxが入ってないと発狂した
  2. envoyと戯れる -> 仲良くなれなかった...
  3. webpushの実装(説明文を読むための国語力が必要, つらい)
  4. Logをええ感じに表示 -> このええ感じがあとで仇に...
  5. 3台の構成を考える(3台ごとスペックが違うだと...?)
  6. 準備してきたansibleのscriptを無事にコケさせる
  7. MySQLのcnfをええ感じに
  8. インラインメモリキャッシュをやろうとした(できたとは言っていない)

ではやったことを具体的に

1. nginxが入ってないと発狂した

nginxの設定をええ感じにしようとした. チャレンジでやったことがある!!という気持ちになりたかった.

しかし開始そうそう期待が裏切られてしまった...

nginxがないだと....

僕らは焦った. 今まで練習してきたものは何だったのか...

webサーバなんてnginx以外知らないぞ...

僕らは絶望に苛まれた

だが一縷の光が指した

sudo lsof -i:443

envoyだと....?

もちろんチームメイトは皆envoyを使ったことがなかった...

まあということでお気持ち雰囲気でenvoyのyamlを雰囲気で書いた.

2. envoyと戯れる -> 仲良くなれなかった...

上の通りです. 公式ドキュメント読んだけどよくわからなかった. 文字通り何もわかんねえ

3. webpushの実装(説明文を読むための国語力が必要, つらい)

reudさんとyapattaでお気持ちwebpushについて公式の説明を読んだ. reudが天才的な読解力を発揮してreudに説明されながらコードを書いた.

adminがclarificationに回答したら即webpushするようにした. スコア5000点ぐらい伸びた. 天才か?

4. Logをええ感じに表示 -> このええ感じがあとで仇に...

僕らは事前に, MySQLのslow-queryのLogをpt-query-digestに投げて, alpにフォーマットさせてブラウザで読めるようにするshellscriptを作った.

それをcrontabに投げて自動でLogが更新されるようにした. しかしnetdataで負荷計測したところ何も走らせていないはずなのになぜか遅い...? というお話になった. processでpt-query-digestがメモリを食っていることに気づいた.

cronを走らせなくしたらメモリ消費量が減った. スコアが上がった. セルフISUCONをしてしまったぜ.

5. 3台の構成を考える(3台ごとスペックが違うだと...?)

neofetchを使って3台のスペックを確認した. 3台ともスペックが違かった. 1つ目がメモリ1G CPU2コア, 2つ目はメモリ2GB CPU2コア, 3つ目はメモリ1GB CPU4コアだった.

netdataで負荷計測して議論した後, 最終的にサーバ1にenvoy, サーバ2にapi, web, サーバ3にMySQLという構成にした. 案外MySQLはメモリを食わなかったが, CPUリソースを使っていることがわかった.

データは絶対です, 雰囲気で構成を考えると痛い目に遭うので注意.

6. 準備してきたansibleのscriptを無事にコケさせる

悲しいですが時間は許してくれなかったので, 皆で手動でポチポチインストールしました.

7. MySQLのcnfをええ感じに

たかひろさんにやってもらった. slow-queryのログをオンにして, innoDBのメモリ周りの設定, 外部IPからアクセスできるようにした. 素晴らしい.

8. インラインメモリキャッシュをやろうとした(できたとは言っていない)

teamsに関してインラインメモリキャッシュを実装しようとした. 時間が足りなくて結局諦めてしまった. mapでええ感じにしたかった.


まあこんな感じですね. あっという間に時間が過ぎてしまった. 集中できた気がする.

家で3人で集まってオンサイトでISUCONに挑んだ.

議論が捗って非常に楽しかった. オフラインならでは熱量を大事にしたいね.

チームメイト本当にありがとうございました!! こんな楽しい経験をさせて頂いて本当に感謝です!!

追記

Failしていました. 原因究明できず. これが人生.

続く...