LoginSignup
2
1

ISUCON13に参加してきた

Last updated at Posted at 2023-11-26

書くこと

  • 準備
  • 当日
  • 振り返り

準備

Gitの初期化の仕方の調整

以前はsshkeyの転送などを行なっていたが、下記をコピペするだけでclone出来るのでかなり楽になった。
git clone https://<user>:<pat>@github.com/<organization>/<repo_name>

マシンのセットアップ

環境構築を自動化するためにShellとAnsibleで環境構築を行えるよう準備した
zsh化、notify_slackのinstall、gitのuser configなど自動化

fgprofの導入

GoのProfilerツールを使うようにした。スコアには影響が出づらいが、関数単位としては早くなっているとかが分かるようになった。以前はスコアあまり変わらないね、というだけで変更の影響が可視化しづらい状況だった

Bing Chatの利用

エラーや改善点などは基本的にすぐに投げるようにしていた。
openaiのブラウザ版に比べると出力が少し遅いので課金しても良かったかも

Go、Serviceなどの理解

GoでQueryを書く方法、Ubuntuでのlogの出力、確認方法など
普段そもそもあまりGoを書かない上にIDEに頼ってログ出力、デバッグをしていて、毎年Ubuntuでの確認方法が分からず苦戦していたので今年は念入りに準備した

当日

自分の動き方
基本的には公式推奨の動き方を参考に進めた
https://speakerdeck.com/rosylilly/isucon12-shi-qian-jiang-xi?slide=22
10:00 cloud formationの立ち上げ、bench叩く
10:10 当日マニュアル、アプリマニュアルを読む、サービスを動かす
10:50 git, zsh, notify_slack, fgprofの導入, alp slow_queryをslackに出力後ログを破棄するよう調整
11:30 alp, slow_queryを元にいくつかの改善点を考えて作業を分担
11:40 goのinstall、初期設定。 go1.21を使えというエラーが出ていたがubuntuでversion指定なしでinstallすると1.18が入ってしまい、リンクを探すのに苦労
12:20 api/livestream/:livestream_id/livecomment の改善に着手,fgprofを元にfillUserResponseで時間がかかっていたので着手、2度引きしている箇所を一度で取れるように。fgprof上ではfillUserResponseはかなり早くなった
12:40 次に時間がかかっている関数が fillLivestreamResponse 。N+1問題が入っていた為改善しようとしたがBenchが止まって影響が確認出来ず。14:50頃に再開したが失敗していたのでrevert
13:40 DBのデータが文字化けしてしまい原因調査。bashからzshに切り替えた際に UTF-8の設定が外れていたのが原因。またGitHubに書かれていたデータの初期化のコメントでcat xxx があったがcatが行数まで出力していた為エラーを吐いていたところで詰まる
15:00 アプリ,DBの2台構成の作業。bind addressを消してdb serverの向き先をprivateIPに指定して完了、と思ったら権限エラーが。Bing Chatで確認した所DB側で設定が必要とのこと。過去の設定では一度もしたことがなかったので戸惑いながら作業してようやく接続
16:00 使用されているDBがisudnsとisupipeの二つだったのでAPP, DB, DB編成にしようという話に。PowerDNSの設定がenv.shで行われているものと思い設定を変えてみたが変わらず。権限の問題で弾かれているという仮説を立てて調査していたが何もわからず。最終的にapp, app, DBの構成にした。だが appの向きがそれぞれローカルのisudnsを見ている為、スコアが下がってしまった

振り返り

良かった点

  • マシンの初期設定が去年3時間かかっていた所が30分で終わらせられた
  • Goprofでスコアに影響が出にくいが改善できているかの可視化ができた
  • BingChatを利用してエラーの解決の時間短縮ができた
  • 1年間練習を継続できた

来年に向けて

  • Goの環境構築、ビルドの反映で時間がかかっていたのでローカルでビルド、アップロードを自動化出来るようにする
  • ベンチを叩けない時間が長かったのでローカルで動作確認できるようにする
  • Goの修正はbranchで確認、修正が確認できた後にマージする
  • 3台編成の練習をする
  • 仕様の理解を時間内にした上でスコアの改善に直結するような対策を取れるようになる

過去記事

https://qiita.com/akirago/items/eb42df918387fb7030ba
https://qiita.com/akirago/items/c3581551177887308a72

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1