- こまめに話しながらコミュニケーションを取る
- やった作業はSlackで共有
- 全体構成など整理しやすいように、ホワイトボードを活用
- レギュレーションや説明を熟読
- スコアの算出方法、失格条件など全体を把握
- 許容されるエラー数なども確認
- サイトへアクセスして動作確認
- とりあえずベンチマークを動かして初期スコアを確認
- SSH接続設定
- アプリのGit化
- ミドルウェア設定ファイルのGit化
- MySQL
- Nginx
- OS設定ファイルのGit化
- /etc/sysctl.conf
- kataribe
- 合わせてNginxのアクセスログも対応
- Percona Toolkit(pt-query-digest)
- netdata
- dstat
- デプロイの自動化
- pprof
- 確実にやるべきチューニングは先に行う
- ミドルウェア
- MySQL
- my.cnf
- Nginx
- nginf.conf
- MySQL
- OS
- /etc/sysctl.conf
- SELinuxを無効化
- ミドルウェア
- ベンチマークを動かして初期状態とスコア比較
- 利用しているミドルウェアとバージョン
- ミドルウェア間の連携の流れ
- アプリケーションの実装
- OSのバージョンや設定値
- サーバのスペック(CPU、メモリ、ファイルシステム)
- Nginx
- アクセスログ分析
- kataribe
- 静的ファイル配信の効率化
- アプリケーションとの接続方法の効率化(ソケットの利用など)
- アクセスログ分析
- MySQL
- Slow Log分析
- pt-query-digest
- クエリ頻度
- インデックス
- データの内容やテーブル分割の妥当性
- Slow Log分析
- アプリケーション
- 処理効率の分析
- pprof
- ソースコードチェック
- N+1問題
- テンプレートファイル
- 処理効率の分析
- OS
- 常時パフォーマンス監視
- netdata
- ボトルネック検出
- dstat
- 常時パフォーマンス監視
- 複数サーバの活用
- ミドルウェアの導入
- Redis
- memcached
- アプリケーションのライブラリ、フレームワーク入れ替え
- 既存データの持ち方変更
- 画像
- 一時データ
- キャッシュ導入
- ジョブキュー機構
- DBのテーブル分割