Road to ISUcon

システムアーキテクチャ

概要

ISUcon出場に向けて準備したことを記す。

目標・目的を定めた

  • 目標
    • ISUconの予選の時間を目一杯使い切ってチューニングをする
      • 勝つことが目標ではあるが、初参戦なので現実的なラインの目標を立てた
  • 目的
    • インフラ周りの知見を高める
    • パフォーマンスを考慮したアプリケーション構築のための知見を高める
    • 社内のパフォーマンス・チューニングの業務に携われるようにする(頑張る)

メンバーを募集した

会社の同僚を誘い、2人チームで参戦。

パフォーマンス・チューニングの手順までを確認した

準備

  • レギュレーション確認 
  • 環境構築
  • sshの設定
  • バックアップ取得
  • 自動デプロイ構築
  • 簡易的なスクリプト
  • ssh接続してデプロイタスク実行、ミドルウェア再起動など
  • モニタリングツール導入
    • netdata
  • プロファイリングツール導入
  • ベンチマーク

構成確認

  • プロセス確認
    • 不要なものは止める
  • ハードウェアリソース
    • top
  • データベース
    • MySQL
      • データサイズ確認
        • テーブルごとのサイズや行数を確認
mysql> use database;
mysql> SELECT table_name, engine, table_rows, avg_row_length, floor((data_length+index_length)/1024/1024) as allMB, floor((data_length)/1024/1024) as dMB, floor((index_length)/1024/1024) as iMB FROM information_schema.tables WHERE table_schema=database() ORDER BY (data_length+index_length) DESC;
  • アプリケーション
    • URL洗い出し
    • コードリーディング

チューニング

  • パフォーマンス計測→分析→チューニング→計測
  • CPUなのか、IOなのか、アプリケーションなのか、DBなのか

所感

初参戦して人権を失ってきた。 練習量が足りていないのはともかく、それ以前に基本的なことができていなかったので、来年はちゃんと戦えるように準備、成長していきたい。 自分の課題を見つめ直したり、今後のモチベーションに大きな影響を与えたりする機会となってそういった意味でも参加することができて良かったと思う。 なんでこれが無料なんだろうというくらいの大会で、運営の皆様方に大変感謝しています。

参考リポジトリ

参考リンク

ISUconに向けて読んだ本