男女比はカレーと福神漬けと同じくらいスマートフォン用の表示で見る男女比はカレーと福神漬けと同じくらいマサカリよろしくお願いします。2019-05-13新卒ISUCONで優勝しましたISUCON新卒ISUCON(SHISUCON)とは弊社ではwebアプリケーション開発の基礎となる知識を実践的に吸収するため、新人研修の一環として新卒メンバー+CTOでISUCONを行うことが恒例になっています。Contest)と呼んでいます。(他の人は新卒ISUCONと呼んでいます)ルールは以下の2点を除けば本来のISUCONと同じです。15:00~15:30の計2回、ISUCON上級者のメンターがアドバイスをしにきてくれる↓去年、一昨年のSHISUCONの内容www.wantedly.comwww.wantedly.comSHISUCONの意義についてはこれがわかりやすいspeakerdeck.com今回のSHISUCONではYahoo!のY!SUCONを利用しました。Y!SUCONは1台のサーバで解くことが想定されている問題ですが、今回は3台のサーバ(c4.large)が与えられました。(新卒ではないけど別業種からの転職&本人の強い参加希望があったので新卒枠としての参加になったらしい?)自分達のチームは24,550点でフィニッシュしCTOをおさえて優勝することができました。自分達は結局サーバを1台しか使っていないのでY!SUCONと同じ状況でのscoreとなっています。戦略まず、自分も@spring1018もインフラエンジニアではないため制限時間内でのmiddlewareの完璧なチューニングは難しいだろうと考えました。解く@spring1018は初ISUCONだったということもあり、問題形式に慣れることを目的にISUCON7予選を本選出場ラインのscoreが出るまで解きました。本選出場のscore届くまでに2日かかった)自分はISUCONは参加したことがあったのですが、アプリケーションしか触ってこなかったのでインフラ周りの知識が皆無でした。そのため個人的にISUCON6予選、ISHOCON2*1を解いてインフラ周りのハマりポイントに一通りハマっておくよう心がけました。GitHub競技開始前からリポジトリを作っておき、wikiを見ればほとんども問題が解決することを目指し充実させました。普通に便利なのでもうちょっとちゃんとまとめてブログの記事にしたい.作業フェーズをリマインダーに設定しておくこんな感じ人間は焦ってしまうと予定を忘れる傾向にあるので複数台使うかどうかの最終判断/再起動試験チェックなど忘れたら困るやつは予めリマインダーに設定しておきました。これで時間のことを気にせず安心して改善に取り組めました。作業フェーズもwikiに書いていた。myprofilerを見つつbenchを回した。kataribeはこれ、myprofilerはこれkataribeから「この時点では静的ファイルもアプリケーションを介して配信していたのでnginxで配信した方がいいよね、ついでに304つけちゃおうか、ついでにnginxの秘伝のタレ流し込んじゃおうか」と判断。myprofilerから「tweets系が明らかに遅い、一旦created_atにindex貼ってお茶を濁そう」という判断をした。/が遅すぎるということがわかったISUCON序盤のはずなのに全然CPUを使ってなかったのでおもむろにunicornのworkerを1→2に増やしたら1500→1700になってDBのCPUがボトルネックであることがわかるようになった。/ではフォロワーのツイートだけでいいのに全員のツイートを取得している。DBにfriendsテーブルをもってくることによって1つにくっつけた。今後2つのサービス(isuwitterとisutomo)をくっつける可能性がある、そうなったときには2つのDBとのconnectionを張る必要がでてきて2倍のconnectionが必要になる後半にテーブルの移し替えを行うとindexを貼り忘れるといった可能性がでてくる、なら何も手をつけていない今のうちにやっちゃえばよさそう結局http通信による遅延がボトルネックになるところまでチューニングが進まなかったのでほとんど意味はなかった気がする。GitHubこの修正に2時間かけてしまい、申し訳ねえ申し訳ねえと呻きながら修正したら3800に点数が上がってホッとした。/searchと同じくらいになった。searchで実行しているクエリを絞るのをやっていこうという話になった。↓は申し訳ねえ申し訳ねえと呻きながらbinding.pryしているときに送られてきた自分の部署のリーダーからのDM。