これは決勝出場決定チームなどと飲んだあとに酔っ払って書いている。明日は土曜日。
細かいことは http://osyoyu.hatenablog.com/entry/2017/10/23/014843 に書いてあると思う。この記事を読めば俺の記事は用なし。
8万点くらいしか取れなかったけど、かつてないチームワークを発揮し、それぞれのパフォーマンスを生かしきったいい試合だったと思うので、酔っ払いながらに書いておく。よかった。
git 禁止
今回で出場は3度目だが、過去二回の出場で学んだことがある。我々には運用をする奴がいない。再起動には耐えられないし、本番で ruby を動かす方法は知らない。学生はあくまでオモチャしか知らないのだ。そのため、我々にはチームワークがない。運用する奴がいないので全員がバラバラにコードを書き始める。最悪だ。
そこで今回、俺はある提案をした。それが git 禁止だ。
git を禁止し、あくまで本番サーバー上での編集しか許さないというルールを敷いた。このことで、コードを書く人間は一人となり、ロックを取るためにコミュニケーションが発生した。
コードを書けない人間は計測するとか便利スクリプトを揃えるとかするしかなくなる。これにより自然と分担が発生した。ちなみに俺は mysql に関する知識がミジンコ並だったのでミドリムシ程度の知識がありそうな @osyoyu に投げた。結果的に彼は MySQL 8 をインストールし損ねて環境を破壊するも、なんとか my.cnf を保守し続けてくれたので、複数の細胞からなる知的生命体であったということになった。
mamiya.sh
そうだね。
これも @osyoyu 作。3台あったマシンのうち、編集を許されていた1台目のサーバーの環境を2台目,3台目に rsync するための物体。
憧れの @sora_h パイセンの代表作(?)にあやかった名前をつけている。実際便利。
Redis 導入
よくわからないうちに redis が投入されていた。@everysick の貢献。
速くなったらしいが比較をしていないのでわからない。速そう。
キャッシュヒット
たぶんこれが主な敗因。
/icons/ 以下を3台それぞれのファイルシステムから nginx で配るようにしてしまった。ベンチマーカーはキャッシュ関連のヘッダを読んでくれるっぽいんだけど、3台からそれぞれやるとキャッシュヒット率が1/3。Last-Modified がね〜〜。
この辺は精進が足らない。ちなみに我々は計画的なので今回も素振りはありませんでした。精進あるのみ。
req_limit
/fetch に sleep を見つけた我々は、一度それを外すも、スコアにならないエンドポイントを高速化してもしゃーないことに気づいた。
しかし、ruby のスレッドを sleep で占有したくないと思った私は nginx で req_limit を差し込み、適当にゆっくりとレスポンスを返すこととした。
まぁまぁ効いた。俺作。貢献あってよかった。
〜〜
あとなんかあった。
パソコン難しいけど、チームワークは大切。git はダメ