Git Product home page Git Product logo

Comments (6)

HirokiYoshida837 avatar HirokiYoshida837 commented on August 15, 2024

ISUCON競技中 確認観点メモ

アプリケーション

  • 不要なトランザクション開始はないか(SELECTのみのクエリではTxは不要)
  • SQLでのデータ取得数にLIMITをつけられる箇所はないか。不要な量のデータ取得を行っていないか
  • interpolateParams=true でプレースホルダ置換しているか
  • DBに不要なauto incrementカラムはないか
  • auto incrementカラム以外でPK指定できる箇所はないか
  • for文の中でfor文を実行している箇所はないか
  • リスト要素をfor文でinsertを実行している箇所は、Bulk Insert化できないか。
  • リスト要素をfor文でinsertを実行している箇所は、バッチ処理化できないか
  • for文の中でクエリ実行している箇所はないか。
  • アプリケーションから静的ファイルを返している箇所は、キャッシュヘッダをつけているか
  • 静的ファイルの配信はnginxから直接できないか
  • 不要なログ出力を止めたか。
  • ログ出力レベルを変更したか
  • アプリケーション全体を負荷分散することを検討したか
  • 特定のエンドポイントのみを、別サーバーに移すことを検討したか
  • データをインメモリキャッシュすることを検討したか
  • 大量データの処理をgoroutineで非同期バッチ処理することを検討したか
  • SELECT * FROM ...を行っていないか。不要なカラムをSELECTしていないか。
  • ソート処理をSQLで行うことを検討したか?(DB、アプリそれぞれの負荷次第)
  • ソート処理をアプリケーションで行うことを検討したか? (DB、アプリそれぞれの負荷次第)
  • DBに不要な情報をINSERTしようとしていないか。

サーバー

  • ディスク容量がいっぱいになってないか
  • dstat、vmstatから、IO waitなどの傾向がわからないか
  • htopなどから、メモリかCPUのどちらがボトルネックになっているか
  • アプリケーション以外で負荷がかかっているサービスがないか
    • journaldなど
  • nginx、DB、アプリケーションの負荷のバランスはどうなっているか。
  • DBやnginxを別サーバーに分離できないか

nginx

  • nginxは正常にうごいているか。
  • nginx -tでエラーがでていないか
  • nginxのエラーログはでていないか(一時ファイル書き出しなど)
  • index.htmlやassetsファイル類・静的ファイルをnginxでキャッシュできないか
  • アプリケーション側から画像などの静的ファイルを返却する際に、キャッシュヘッダをつけているか
  • キャッシュヘッダを追加することで、ベンチマーカー側でキャッシュさせられないか
  • HTTP2は有効化されているか
  • 大きなリクエスト時の、一時ファイル書き出しは発生していないか
  • nginxだけを別サーバーに移せないか
  • nginxで、Botリクエストを弾くような設定を追加できないか

DB、データベース

  • DBの切り替え方法や指定方法は確認したか
  • mysqlのエラーログは出ていないか
  • 各クエリはindexが効いているかを、実際にExplainして確認したか
  • 降順・昇順組み合わせのIndexはmariadbでは動かないなどの罠はかかってないか
  • DBの初期化処理方法は確認したか。ベンチ実行ごとにDBが初期化されているか。
  • テーブルの正規化を検討したか
  • 検索やデータ更新を効率化するために、テーブルの非正規化を検討したか
  • DBを別ホストに移せないか
  • 一部のデータをテーブル分離することを検討したか
  • テーブル毎にDBホストを分けることを検討したか
  • 実行回数が多いクエリを削減できないかを検討したか
  • 実行回数が少ないが時間がかかっているクエリがないかを確認したか
  • 空間インデックスが使えないかを検討したか?
  • Generated Colmunで、降順用カラムを自動作成する必要はないか?
  • カラムを増やした場合、Invisible ColumnとしてSelect対象から外す事を検討したか

from isucon2022.

HirokiYoshida837 avatar HirokiYoshida837 commented on August 15, 2024

競技終了時確認項目

再起動試験

  • 再起動試験を実施したか
  • 再起動後もMySQLやnginxの設定が反映されているか
  • DBやNGINXを分散している場合、再起動後も正しくアプリケーションが動いているか
  • どの順番でサーバーが再起動しても問題ないか

後片付け・ミドルウェア

  • datadogエージェントは停止したか。再起動後も動かないようになっているか
  • netdataなどのモニタリングツールは停止したか。再起動後も動かないようになっているか
  • アプリケーションから、Datadogエージェント関連のコードを削除したか
  • アプリケーションからのログ出力を停止したか
  • 手元のVSCodeや各種ツールからの接続は切ったか

チェック

  • ディスク容量は十分に残っているか

from isucon2022.

HirokiYoshida837 avatar HirokiYoshida837 commented on August 15, 2024

メモ
[Service]
StartLimitBurst=999

from isucon2022.

HirokiYoshida837 avatar HirokiYoshida837 commented on August 15, 2024

ISUCONの初期実装ではlenとcapがともに0のスライスに必要なデータをappendしていく実装が一般的

from isucon2022.

HirokiYoshida837 avatar HirokiYoshida837 commented on August 15, 2024

 以下のように、DBから取るがレスポンスのjsonには含まないものはないか?
あればDBからの取得対象外にしても良いか検討する。

       Popularity  int64  db:"popularity" json:"-"

検索やIndex用にカラムを追加した場合は、このようにしてレスポンスのjsonに含ませない方法もある

from isucon2022.

HirokiYoshida837 avatar HirokiYoshida837 commented on August 15, 2024

実装したインメモリキャッシュは適切に動いているか。
初期情報sqlでの初期化の場合、このデータがキャッシュに入れられてない事もある。

インメモリキャッシュはメモリサイズが溢れないか。

from isucon2022.

Related Issues (7)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.