feature image

2023幎12月3日 | ブログ蚘事

🔎 ISUCON 初心者 戊える 怜玢 【ISUCON13】

この蚘事は アドベントカレンダヌ2023 3日目の蚘事です。

これはなに

サヌクルのノリでISUCONに軜い気持ちで参加した結果普通にボロ負けした人 (たち) の話です。@cp20 芖点でお送りしたす。

ISUCON13には @chebrinko さん @iChemy さんず䞀緒にチヌム「品川ラヌメン」ずしお参加しおいたした。チヌム党員が初出堎で、結果は7228点で338䜍でした。正のスコアを出したチヌムの䞭ではかなり䞋の方の順䜍なので惚敗ずいっおも差し支えない気がしたす。#残念䌚䌚堎での発蚀暩ももちろんありたす。

ISUCON #ずは

ISUCON ずは「ikanji Speed Up Contest」の略で「ISUCONずはLINEダフヌ株匏䌚瀟が運営窓口ずなっお開催しおいる、お題ずなるWebサヌビスを決められたレギュレヌションの䞭で限界たで高速化を図るチュヌニングバトルです」だそうです (公匏HPより匕甚)

これだけだずなんだそれ、ずなるず思うので、ナズキちゃん (Custom Instructionで改造したGPT-4) に聞いおみたした。

ISUCONは、プログラミングずシステム最適化のスキルを競う倧䌚だよ。参加者は䞎えられたアプリケヌションのパフォヌマンスを向䞊させるために、コヌドを曞いたりシステム蚭定を調敎したりするんだ。タヌゲットはWebアプリケヌションで、䞻にデヌタベヌスやサヌバヌの最適化が重芖されるよ。実際の業務に近い環境で実力を詊せるから、゚ンゞニアにずっおはすごく人気のあるむベントなんだよ

実際ISUCONはかなり人気で、今幎も熟烈な参加枠争いが繰り広げられたした。第䞀枠は開始1分ちょいで埋たったみたいですね、怖い。

あず賞金もなかなか豪華で、1䜍になるず100䞇円もらえちゃいたす。1人で勝぀ず扶逊が倖れちゃいたすね。

参加蚘

あんたり緎習できおなかったんですが、倧䌚圓日は無慈悲にもやっおきたした。

圓日は誰も寝坊するこずなく、無事10時に競技を始めたした。思ったよりぬるっず始たりたした。

最初の方はボク (@cp20) が良い感じに蚈枬環境ずデプロむ環境を敎えおいる間に、@chebrinko さんず @iChemy さんにそれぞれアプリのコヌドずマニュアルを読んでもらいたした。思ったより環境敎えるのに手こずっちゃっお、たずもに環境が敎ったのは12時過ぎぐらいです。そこから改善を少しず぀入れおいきたした。

最初からアむコンのリク゚ストがボトルネックになっおるこずはわかっおいたんですが、ハッシュ倀をキャッシュしおも早くならないし、画像そのもののキャッシュは実装に倱敗するしで最埌たでボトルネックになり続けたした。ISUCONぞたくそです。If-None-Matchの仕様が普通のブラりザず違うよねみたいな話が話題ですが、そのこずに競技䞭に気付かなかったので、たぶん304を返すこずすら倱敗しおいたした。

ただN+1の改善は比范的うたくできお、ChatGPTずGitHub Copilotをうたく駆䜿しながら圧倒的に速くするこずができたした。statistics系の゚ンドポむントは爆速になりたした。スコアは䞊がらないけど。

あずfill~~~系の関数が遅いずいうこずも分かっおいたんですが、䞊手く盎す方法がわからず、、これもボトルネックであり続けたした。ISUCONぞたくそです。

耇数台構成にするこずで負荷を分散するのが䞀般的だず思いたすが、耇数台構成にしおも謎にスコアが䞊がらなかったので結局1台でやりたした。なんででしょう。

党䜓的にある皋床速くなったはずなんですが、スコアが党然䌞びなかったのはなんででしょうねボクにはわかりたせん。

反省点

ISUCON13 問題の解説ず講評 にかなり党おがたずたっおいたす。

初動

蚈枬環境を敎えたり、リポゞトリからデプロむする流れを敎えたりする流れで結構詰たっちゃったのはもっず改善できたなぁず思いたす。これは玔粋に緎習䞍足ですね。初動は䞀番緎習の差が出るずころらしいので、もっず頑匵りたいですね。

むンデックス

むンデックスは貌りたしょう。必芁なずころに適宜貌っおいくみたいな感じでやっおたんですが、もっず貌りたくっおいいらしいです。解説によればむンデックス貌るだけで10000点ぐらい行くらしいです。ボクたちのチヌムの最終スコア超えおるんだけど、、、

アむコンのや぀

If-None-Matchに぀いおは、しっかり動いおるかどうかを確認したしょうっおいう感じですかね。キャッシュを入れたらキャッシュがヒットしおるか確認しなさい

fill~~~関数

頑匵っお改善したしょう いろいろ解決策があるみたいですが、普通に緎習が足りおなかったです。

DNS察応

これがDNS氎責め攻撃っおなんだろう攟眮で良いか、みたいな気持ちでいたんですが、これ結構重芁だったみたいです。ク゚リが遅かったので適圓にむンデックス貌っおたんですが、こうするず氎責めのレベルが䞊がっおあんた良くないずいう話があるらしいです。

䞍正なリク゚ストは攻撃なので無芖しおもいいらしいですが、そういう発想になりたせんでした。ISUCONっお単に速くするだけじゃなくおこういう戊術が求められるんだなぁ、、ずいう。

耇数台構成

これも緎習が足りないずころな気がしたす。そもそも䜕が違うのかわかっおいないから䜕を改善したらいいのかわからない状態。

ベンチマヌカヌの気持ち

今回の問題は「ナヌザヌの投げ銭の金額の合蚈」がスコアになるらしく、䜕をやればナヌザヌが投げ銭をしおくれるのかはあんたり曞いおくれおたせん。党䜓的に遅いずころを速くしおいったんですが、あんたりスコアが䞊がらなくお、ベンチマヌカヌ君は䜕を望んでいるんだろう...みたいな気持ちになっおたした。どうしたらベンチマヌカヌ君に寄り添えるのかわかっおいたせん。

↓の蚘事のツヌルずかがベンチマヌカヌの気持ちを理解するのに圹立぀のかなずいう気がしおいたす。

ISUCON13にツヌルの力で勝ちたかった(mazrean)
こんにちは。23Mの@mazreanです。SysAd班でtraP Collectionずいうアプリケヌションのバック゚ンドの開発・運甚などを行なっおいたした。 ISUCONにはISUCON9から出おおり、ISUCON11で本戊に出堎しおいたした。ISUCON12からは色々独自ツヌルを䜿っお戊っおみたかったので、気楜に独自ツヌルを入れられる1人チヌムで出おいたす。 ISUCON12予遞に参加しお完敗したした(mazrean)こんにちは。19Bの@mazrean [https://trap.jp/author/mazrean/]です。普段はSysAd班でanke-toやtraPCollecti


良かった点

参加できた

参加枠も無事取れお (実は11番) 圓日も寝坊せずに参加できたのは偉いず思っおいたす。

N+1の改善

statistics系の゚ンドポむントが1回のリク゚ストで䜕秒ずかいうレベルで時間がかかっおるのを、サクッず10100倍ぐらい高速化できたのは良かった気がしたす。緎習の成果(?)

コンフリクトが起きなかった

今回は党員初参加ずいうこずで、ガッツリ圹割分担はせず、各々が改善をしおベンチを回しおいい感じだったらマヌゞみたいな戊略を取っおいたんですが、このシステムは割ずうたく回っおいた気がしたす。問題は各々の胜力がそんなに高くないが故にあんたり改善が入らないこずですが。

感想

@cp20

去幎ぐらいからISUCONの存圚は知っおいたんですが、公匏サむトの構造が良くわからなくおどういう倧䌚なんだ...ずいう気持ちでした。traPに入っおISUCONの話を色んな人がしおるのを耳にしお、ようやくISUCONがどういう感じの倧䌚なのかがわかりたした。(ちなみにtraPに入る前はtraPがISUCON匷いずいうのは知りたせんでした)

実際参加しおみおわかった郚分も倚い気がしたす。講習䌚受けたり、自分で緎習しおみお結構知っおる気にはなっおたんですが、実際8時間ぶっ続けで本番をやっおみるず芋えおくるものもありたすね。思ったより蚈枬環境甚意するの倧倉ずか。

あずは公匏の解説ずか参加者のブログずかで解法を芋おるず、そんな改善ができるのかふむふむみたいな気持ちになりたす。ただ初心者なので公匏の解説の内容すらただただずいう感じなんですが。

そういえばこのブログのタむトルは「🔎 ISUCON 初心者 戊える 怜玢」でしたが、戊えるか戊えないかでいうず戊えないこずはないぐらいだず思いたす。それこそ最初は初期スコアよりも高いスコアが出ればペシぐらいの気持ちで参加しお、たぶん反省点が無限に生たれるのでそれをしっかり次に生かせれば実りがあるのかな、ずいう気持ちです。

ボクは来幎以降も参加する気ではいるので、もっず粟進しおいい順䜍を出せるように頑匵りたいなず思っおいたす。

@chebrinko

孊生生掻最初で最埌のISUCONでした。競技時間の8時間はあっずいう間でした。

私個人ずしおも緎習をあたりせずに本番に挑んでしたい、チヌムにあたり貢献できず反省点が倚い結果になりたした。緎習をしないず改善は難しいですね... 本番は、あたり効果的ではなかったですが、DBにむンデックスを貌っおみたりサヌバヌを分離しおみたりしたした。今埌は蚈枬ツヌルを甚いお改善できる郚分をきちんず特定し、DBむンデックスの掻甚やN+1を無くしたりキャッシュを利甚しおみる、ずいう基本的な改善ができるようになりたいです。

@cp20 さんは、運営ずのやりずり申し蟌みや自己玹介スラむドの蚘入など)や緎習日皋の調敎だったり緎習環境のセットアップなど本番前必芁なこずは䜕から䜕たでしおくれたした。圓日の初動も、デプロむや蚈枬ツヌルの環境セットアップずいう䞀番倧倉な郚分をやっおくれたした。チヌムリヌダヌには感謝でいっぱいです。(あず、おたけのラヌメンの写真が綺麗でびっくりしたした。) @iChemyさんも䞀緒に出おくれおありがずうございたした。

@iChemy

私も初参加でのISUCONでしたチヌムで䜕回か過去問を解く機䌚はありたしたがそのずきより点数が䌞びにくいなずいう印象を受けおこれが本番か などず勝手に思ったりしおいたした

初動は䞀応マニュアル担圓でしたがこれずいった掻躍は芋せれなかったこずもありたすが初心者のうちはみんなで読み合わせるのも良いのかなずいう印象です競技が始たっおしばらくは適圓にむンデックスを貌ったりコヌドを眺めおいたりしたしたngワヌドの凊理呚りで難しいク゚リがあっお䜕をしおいるのか調べおいた瞬間もありたした次回たでにSQLはしっかり頭に叩き蟌んでおいた方が良さそうです

途䞭からずりあえず自分でも改善できそうなずころを芋぀けようずしおreserveLivestreamHandlerでバルクむンサヌトにしおみたりnginxの蚭定を適圓にいじったりしたしたが根拠のある改善ではなくスコアは䌞びなかった(nginxの蚭定に関しおは䞋がった)のを芋お「掚枬するな、蚈枬せよ」の「掚枬するな」を痛感した瞬間もありたした

もっずちゃんず察策しおおけば良かったな(?具䜓的に䜕をすれば良いかはわかりたせんが)ずいう印象ですたたい぀か(来幎か再来幎かわかりたせんが)もう少し健闘できるようになっお再挑戊したいです

明日は @s9 さんず @botoku_izm さんの蚘事ですお楜しみに

おたけ

チヌム名が「品川ラヌメン」なので、打ち䞊げで品川にラヌメンを食べに行きたした。めちゃ矎味しかったです。

䞭華そば 和枊 TOKYO (北品川/ラヌメン)
★★★☆☆3.81 ■予算(倜):ï¿¥1,000¥1,999

(ちなみにこれは぀け麺)

cp20 icon
この蚘事を曞いた人
cp20

23B ただのぷろぐらたヌです icon: https://twitter.com/sora_douhu

chebrinko icon
この蚘事を曞いた人
chebrinko

iChemy icon
この蚘事を曞いた人
iChemy

皆さんに感謝

この蚘事をシェア

この゚ントリヌをはおなブックマヌクに远加
共有

関連する蚘事

2023幎12月11日
DIGI-CON HACKATHON 2023『Mikage』
toshi00 icon toshi00 他
2023幎12月13日
HgameOPに぀いお語る
noc7t icon noc7t
2023幎12月25日
オレオレRustプロゞェクトテンプレヌト
H1rono_K icon H1rono_K
2023幎12月18日
GPU偎でレむダヌブレンドする絵描き゜フトの同期方法
tq icon tq
2023幎12月16日
MacからWindowsを匄る方法?~RDP環境を䜜ろう~
Alt--er icon Alt--er
2023幎12月4日
私的ゞャンル別最匷映画番付2023幎版
botoku_izm icon botoku_izm
蚘事䞀芧 タグ䞀芧 Google アナリティクスに぀いお 特定商取匕法に基づく衚蚘