はじめに
チーム(´・ω・`)です
言語はPHPを利用し、最終スコアは 34,753 でした
N+1の対応がやりきれず、伸び悩んでしまいました…
利用させていただいたツール
alp: https://github.com/tkuchiki/alp
TL
- 前日までに: 素振り、スクリプトをある程度整備
- 10:00~ 概要確認、Git設定
- 11:00 DBへインデックス追加
- 11:30 アプリケーションとMySQLを分離
- 12:30 PowerDNSのバックエンドをSQLiteへ
- 12:30- アイコンを取得する部分とalpを見て時間のかかっている場所の改修
- 16:00 PHPのチューニング
- 17:30 N+1がめっちゃあることに気づいたので、簡単にキャッシュする仕組みを追加
- 18:00 競技終了
最終的な構成
1: DNS/アプリケーションサーバ
2: MySQLサーバ
3: 空
反省点
まず、N+1に気づくのが遅すぎました…
過去の問題をやってきて for 文の中でクエリが実行されていることが多かったため、その中だけを確認しており、呼び出している関数の先が見切れておらず、気づけませんでした
また3台目の利用ができず、アプリケーションサーバにできたら、わずかながらスコアが上がったのではないかなと思いました
感想
Go言語が多く強い中ではありますが、PHPでもここまでいけるというのを見せつけたかったのですが、我々の力及ばず得点が伸ばしきれませんでした
今回の問題ではDNSの要素もあり、勉強にもなるISUCONでした
もし来年もありましたら参加させていただきたいなと思います
ここまでお読みいただきありがとうございました