障害対応シリーズ：Apache


Apacheを運用する中で障害時に確認するポイントを列挙します。

### プロセス数の確認
Apacheのプロセスが起動しているか確認する。
設定ミスがある場合は起動コマンドを発行しても、プロセスが起動していない場合があったり、
起動コマンドを発行した後のメッセージをよく読まないで作業を進めた場合に、
プロセスが起動していない場合がある。（障害ではなくオペミス）

```bash:コマンド
ps u -C httpd |sed -e '1d' |wc -l
```

```bash:結果
10
```

### CPU使用率の確認
CPUの使用率を確認する。
まずは[%idle]の値が高い事を確認(高いほどリソースが空いている)、
次に、それ以外の値が低い事を確認する。値が高ければ [Top] などで更に調査する。

正常時の数値と比べて正常か確認する必要が有るため、正常時の数値を知っておく必要がある。
Zabbixなどの監視システムでリソース監視を行っているとそちらを見るのも有り。

```bash:コマンド
sar -u 1 100
```

```bash:結果
6Linux 2.6.32-431.3.1.el6.x86_64 (vagrant-centos65.vagrantup.com) 	2015年05月14日 	_x86_64_	(1 CPU)

22時57分49秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
22時57分50秒     all      0.00      0.00      0.00      0.00      0.00    100.00
22時57分51秒     all      0.00      0.00      0.99      0.00      0.00     99.01
22時57分52秒     all      0.00      0.00      0.00      0.00      0.00    100.00
22時57分53秒     all      0.00      0.00      0.00      0.00      0.00    100.00
22時57分54秒     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.00      0.00      0.20      0.00      0.00     99.80
```

### メモリ使用量の確認
メモリの使用量を確認する。(2パターンあります。)
正常時の数値と比べて正常か確認する必要が有るため、正常時の数値を知っておく必要がある。
Zabbixなどの監視システムでリソース監視を行っているとそちらを見るのも有り。

#### 1. 1秒毎にメモリ使用量の推移を確認したい場合

※ 推移は取れるが計算が必要

```bash:コマンド
sar -r 1 100
```

```bash:結果
Linux 2.6.32-431.3.1.el6.x86_64 (vagrant-centos65.vagrantup.com) 	2015年05月16日 	_x86_64_	(1 CPU)

15時44分35秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
15時44分36秒    498300    105276     17.44     13408     40436     66752      3.59
15時44分37秒    498324    105252     17.44     13408     40436     66752      3.59
15時44分38秒    498324    105252     17.44     13408     40436     66752      3.59
15時44分39秒    498324    105252     17.44     13408     40436     66752      3.59
15時44分40秒    498324    105252     17.44     13408     40436     66752      3.59
Average:       498319    105257     17.44     13408     40436     66752      3.59
```

※ 実質メモリ使用量 = kbmemused - ( kbbuffers + kbcached )

* kbmemfree: 物理メモリの空き容量
* kbmemused: 使用中の物理メモリ量
* %memused: 物理メモリ使用率
* kbbuffers: カーネル内のバッファとして使用されている物理メモリの容量
* kbcached: カーネル内のキャッシュ用メモリとして使用されている物理メモリの容量
* kbswpfree: スワップ領域の空き容量
* kbswpused: 使用中のスワップ領域の容量
* %swpused: スワップ領域の使用率

#### 2. topのように現在のメモリ使用状況を確認したい場合
※ 計算は不要で、”その時”の状態が確認出来る

```bash:コマンド
watch -n 1 free -m
```

```bash:結果
Every 1.0s: free -m                                                     Sat May 16 18:57:52 2015
             total	 used       free     shared    buffers     cached
Mem:           589        110        479          0         13         43
-/+ buffers/cache:         53        535
Swap:         1224          0       1224
```

※ 実質メモリ使用量 = [free]列の[-/+ buffers/cache]の値
※ 上記はMB表記

### ディスク利用量を確認する
ディスク利用量を確認する。[Use%]を確認。
ディスク使用率が高いと監視でアラートが上がると思いますが、
リソース監視（ディスク）を行っていない場合は、一応確認しておいた方が良い。
まれに何らかの作業で一時的なファイルを作成した際にディスクを一杯にしてしまう事がある。

```bash:コマンド
dh -h
```

```bash:結果
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       7.9G  1.2G  6.4G  15% /
tmpfs           295M     0  295M   0% /dev/shm
vagrant         112G   45G   68G  40% /vagrant
```

### エラーログを確認する
正常に起動している場合、何に問題があるかまずエラーログを確認し、
異常なログが発生していないか確認する。
「error」より上の「crit」「alert」「emerg」などが出力されていた場合は、
即Google先生に質問する。

```bash:コマンド
more /var/log/httpd/*errorlog
```

```bash:結果(一例)
[Thu May 14 22:45:28 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu May 14 22:45:34 2015] [notice] Digest: generating secret for digest authentication ...
[Thu May 14 22:45:34 2015] [notice] Digest: done
[Thu May 14 22:45:34 2015] [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations
```

### confの確認

configが正しいかチェックする。
ただし経験上、[Syntax OK]が出ても、SSL証明書のPathが間違えている場合は
Apacheが起動しないこともあった。

```bash:コマンド
$ service httpd configtest
```

```bash:
Syntax OK
```