FCCPC

FCCPCについてお伝えするブログ

ISUCON10予選を1位通過した

はじめに

ISUCON10予選で運良く1位通過ができてしまったので記事を書いてみました。

自己紹介

  • ponyopoppo: PNYOという会社のCTO+i社ソフトウェアエンジニア。 主にアプリ担当

  • hiro116s: i社ソフトウェアエンジニア。 主にMySQL担当

  • じゃがいも: i社ソフトウェアエンジニア。 主にnginx担当

チームについて

ISUCON7-9は予選敗退したので、今回が初の本選出場です。 「FCCPC_かみのやま温泉」というチームで参加しました。3人の住んでる家の地図上での重心をとってみたら、かみのやま温泉があったのでそれをチーム名にしました。

使用言語

ponyopoppoが普段から使っているNode.jsです。

やったこと

13:30 最初のベンチ

451点

13:44 とりあえずnazotteのN+1問題をJavaScriptで多角形包含関係を計算するように改善

514点

13:52 MySQLにインデックスを貼っていく

619点

しばらくベンチマークが止まる

運営さんお疲れさまでした。

14:56 recommended_estateのORを削る

687点

15:01 INSERTを一気にやるように変更

713点

15:25 インデックスを追加していく

726点

15:33 botをnginxで対策する

920点

15:45 estate/searchが同じクエリに対して結構呼ばれているのでキャッシュする

1162点

16:12 estate/low_pricedはINSERTが呼ばれない限り同じものを返すのでキャッシュする

1406点

16:18 nginxにclient_body_buffer_size 512kを追加

1472点

16:22 chair/low_pricedはINSERTかUPDATEが呼ばれない限り同じものを返すのでキャッシュする

1687点

16:27 なんか忘れたけどなんかした

1851点

16:52 インデックスを追加していく

1948点

search用にインデックスを大量に追加したりnazotteのLIMITをいじったりを試みるも点数上がらず

18:13 DBをchairとestateで2インスタンスに分ける

3171点

18:37 recommended_estate内のchairをキャッシュする

3502点

19:41 インデックスを追加していく

4015点

door_min, door_maxを追加しようとするもinitializeが終わらず断念。

hiro116s「YouTubeでも見るか」

20:30 ベンチガチャスタート

20:40 SSRを引き当てる。一足先にISUCON終了

4100点(最終結果)

反省点

  • 家のネットがクソ遅い(夜になると1Mbpsとか)ので本選までにポケットwifiなり何かしら用意する