例えば、現場で先輩が
「このサイトなら4コア・8GBで十分かな」
と言うとき、実は頭の中ではこんなことを一瞬で考えています。
CPUは足りる?
↓
PHPは何本動く?
↓
DBは耐えられる?
↓
キャッシュ効く?
↓
同時アクセスは?
↓
じゃあ4コアで十分そう
つまり、一番最初にインスタンスタイプを覚えているわけではありません。
私ならこう勉強する
第1段階 コンピュータの仕組みを理解する(2週間)
目的
CPUは何をしているのか説明できる
学ぶこと
CPUとは
↓
コアとは
↓
スレッドとは
↓
メモリとは
↓
SSDとは
理解できるようになること
例えば
CPU100%
とは何か
を説明できる。
また
4コア8スレッド
とは何か
も説明できる。
実際に見るコマンド
lscpu
nproc
cat /proc/cpuinfo
top
ゴール
例えば
このEC2は
4コア
8スレッド
メモリ16GB
です。
と言われたら
「どんなコンピュータか」
イメージできる。
第2段階 Linuxを理解する(2週間)
目的
CPUの上で何が動くのか
学ぶこと
プロセス
↓
スレッド
↓
スケジューラ
↓
Load Average
見るコマンド
ps
top
htop
pstree
pidstat
ゴール
例えば
php-fpm
20個
いたら
「20プロセス動いている」
と分かる。
第3段階 nginxを理解する
目的
HTTPを受ける人
学ぶこと
Worker Process
↓
Worker Connections
↓
KeepAlive
↓
イベント駆動
理解できること
例えば
worker_processes auto;
これを見て
「CPUコア数に合わせる設定だ」
と言える。
第4段階 PHP-FPM
ここがWordPressで一番重要です。
目的
WordPressを誰が動かしているか
学ぶこと
pm
pm.max_children
pm.start_servers
pm.max_requests
理解できること
例えば
pm.max_children
40
なら
PHPは
40本まで同時実行
と分かる。
第5段階 WordPress
ここからやっと業務になります。
目的
WordPressがどこでCPUを使うか
理解する。
学ぶこと
WordPress
↓
PHP
↓
SQL
↓
HTML生成
理解できること
例えば
検索
↓
CPU高い
理由が説明できる。
第6段階 同時アクセス
ここが設計者になります。
例えば
100req/s
見たら
考えることは
処理時間
200ms
なら
100
×
0.2
=
20
つまり
20本PHPが同時実行
これを計算できるようになる。
これが一番重要です。
第7段階 キャッシュ
ここで
CDN
Redis
FastCGI
OPcache
全部が繋がります。
例えば
FastCGI
↓
PHPが動かない
Redis
↓
SQL行かない
CDN
↓
EC2まで来ない
全部
何を減らしているか
を理解します。
第8段階 インスタンスタイプ
ここで初めて
t4g.large
m7i.large
c7i.large
r7i.large
を見る意味があります。
考えることは
CPU重視?
メモリ重視?
ネットワーク重視?
です。
第9段階 設計
最終的には
サイトを見た瞬間に
WordPress
↓
PV
↓
req/s
↓
キャッシュ率
↓
CPU
↓
Memory
↓
DB
↓
EC2
これを考えます。
毎回この質問をする癖を付ける
これが一番おすすめです。
サイトを見るたびに
① CPUは何してる?
② メモリは何で使われる?
③ PHPはいくつ動く?
④ SQLは何回実行?
⑤ キャッシュ効く?
⑥ 同時アクセス何人?
⑦ 一番重い場所どこ?
⑧ どこ改善する?
この8個だけ考えます。
私なら半年かけてこの順番で勉強する
| 月 | テーマ | 最終的に説明できること |
|---|---|---|
| 1か月目 | CPU・コア・スレッド・Linuxプロセス | CPU使用率やLoad Averageを見て、何が起きているか説明できる |
| 2か月目 | nginx・PHP-FPM | リクエストが来てからPHPが実行されるまでの流れを説明できる |
| 3か月目 | WordPress・MariaDB | どんな処理でCPUやDBに負荷がかかるか説明できる |
| 4か月目 | キャッシュ(OPcache、Redis、FastCGI Cache、CDN) | 各キャッシュが「何を省略しているか」を説明できる |
| 5か月目 | 負荷試験・ログ解析 | 負荷テストの結果からボトルネックを見つけられる |
| 6か月目 | AWS設計(EC2、ALB、RDS、CloudFront) | 「このサイトならこの構成・このインスタンスを選ぶ理由」を説明できる |
一番大切な目標
「CPUとは何か」を覚えることでも、「EC2の種類」を暗記することでもありません。
最終目標は、サイトを見たときに「どこが先に限界になるか」を頭の中でシミュレーションできることです。
それができるようになると、
- 「このサイトはCPUよりDBが先に詰まりそう」
- 「ここはFastCGI Cacheを入れる方がEC2を大きくするより効果がある」
- 「同時アクセスが倍になっても、キャッシュヒット率が高いからまだ耐えられる」
というように、設計や障害対応で根拠を持って判断できるようになります。