feature image

2024年12月12日 | ブログ記事

【 #ISUCON 】最近の若者は RPC するらしいですよ

ISUCON14お疲れさまでした

ISUCON 参加は去年に引き続き2回目でした。自分たちの成長を感じられるという良い機会であったと同時に、力のなさを痛感した日でもありました。逆に力のなさを痛感しなかったらそれは優勝してるってことなんでしょうか?

結果

最終スコア8878で学生23位、全体188位でした!めちゃ良いというわけではないですが、まずまず健闘したのではないか、ぐらいの順位でした。

何をしたか

具体的なスコアと共に語ると良いのかもしれませんが、大したスコアも出してないし、普通にめんどくさいので、書かない方針で行きます。

ちなみに本当に読んで欲しいのはこの後のツール紹介のところなので、ここは読み飛ばしてもらっても良いです。

(自分がやった部分だけ書いています)

初動

@ikura-hamu さんの isu-isu-h を使おうかなと思っていたんですが、Ansible があまりに遅くてイライラしてしまうので、Remote Provisioning Controller というツールを自作して挑みました。isu-isu-h についての詳細は↓に書いてあります。

【 #ISUCON 】 最近の若者は ssh しないらしいですよ
こんいす~。 @ikura-hamuです。チーム「リアクティブ二子玉川~♪」でISUCON13に出ました。チームブログはこちら(https://trap.jp/post/2075/) ISUCON13「リアクティブ二子玉川~♪」34位(学生6位) 参加記ISUCON13に@pikachu、@ikura-hamu、@h1rono_kで「リアクティブ二子玉川~♪」として出場し、全体34位、学生チーム内では6位(多分)になりました。 GitHub - reactive-futakotamagawa/isucon13Contribute to reactive-futakotamagawa/isucon13 development by creating an account on GitHub.GitHubreactive-futakotamagawa チームメンバー(役割分担) 全員学士2年の3人チームで出場しました。みんなウェブ系に関わり始めたのが大学入ってからにしては、結構頑張ったのではないかなと思います。 例年であれば学生枠で本選出場できる順位ですが、今年は30位までしか賞品が無い

isu-isu-h と計測周りは大きく変えておらず、ログ取りと適当な exporter だけ入れてよしなにしました。スロークエリとかアクセスログとかの集計には kaz/pprotein を使いました。

インデックスぺたぺた

適当にやりました。語ることはない。

Server-Sent Events (未完)

パッとアクセスログを見ると notification 系がバカみたいに叩かれているのでこれを減らそうと思ったんですが、アプリケーションマニュアルを見ると SSE を実装することでこれを減らせそうに見えます。ChatGPT の力を借りつつ実装してみたんですが、ベンチマーカーが「ライドが長時間マッチングされませんでした」という謎のエラーで落ちてしまって、結局バグを取り切れずに最終ベンチには入っていません。

サーバー分割

サーバー1をDB、サーバー3をアプリ (と Nginx) という構成にしました。サーバー2にアプリを載せる気持ちつもりだったんですが、なぜかループバックアドレス (127.0.0.1) ではDBにアクセスできるのにローカルIPアドレス (192.168.0.11) だとアクセスできなくて、??????となっていました。未だに原因は謎です。サーバー3にしたら上手く行ったので、耐え。

getLatestRideStatus のキャッシュ (未完)

単純な GET クエリですがかなりの回数呼ばれているので雑に motoki317/sc でキャッシュしました。それ自体はかなり上手く行ったんですが、高速化されてステータスが高速に変わりすぎた結果、notification の取得が追いつかなくなってクリティカルエラーで落ちるという現象が起きてしまいました。notification の間隔を狭めてもこのエラーが直らず、敗北。

...と見てみると、未完のものが多すぎる、、、実装力が足りないと申す

Remote Provisioning Controller

isu-isu-h を魔改造した結果もはや原型をあんまり留めていないツールです。とはいっても大きく変わったのは Ansible が全部シェルスクリプトになったところで、あとデプロイ用の WebUI を生やしたりもしていました。

良かったところ

良くなかったところ

来年はもっと洗練させます。たぶん。

追記: リポジトリを公開して欲しそうな声を聴いたので、公開しました。observer 部分は isu-isu-h をほぼパクっているので、@ikura-hamu さんに感謝。

GitHub - cp-20/remote-provisioning-controller
Contribute to cp-20/remote-provisioning-controller development by creating an account on GitHub.

ちなみに WebUI はなんと本質部分が1ファイルに詰まっていて、htmx というライブラリを用いて開発されています。htmx を初めて触ったら思ったより面白かったので、こちらもぜひ。

WebUI をサッと作るツールとしての htmx

おわりに

来年は今年よりも良い順位になれるように頑張ります。ぬん!

cp20 icon
この記事を書いた人
cp20

23B / icon: https://twitter.com/sora_douhu

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2024年12月18日
ISUCON14にツールの力で勝ちたかった
mazrean icon mazrean
2023年11月26日
ISUCON13にツールの力で勝ちたかった(mazrean)
mazrean icon mazrean
2021年9月21日
ISUCON11 traP CM制作についての小話
dan_dan icon dan_dan
2024年12月18日
ISUCON14感想戦で40万点超えました
mazrean icon mazrean
2023年11月26日
【 #ISUCON 】 最近の若者は ssh しないらしいですよ
ikura-hamu icon ikura-hamu
2022年7月24日
ISUCON12に向けてダッシュボードを自作してログを可視化しました
Ras icon Ras
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記