忘れないようにメモ
一次対応の心構え
-
操作ログを残す
-
作業は落ち着いて、冷静に、感に頼らず、事実とデータを見る。
-
自説にこだわらない、見切り、諦めを素早く、思い・期待通りじゃなくてもがっかりするのは後で。
-
担当者を責めない。判断謝りを責めない。結果を責めない。でも手抜きは絶対許さない。
-
水分や甘いものを摂る。
-
大丈夫は、大丈夫じゃないサイン
当たり前のことを、冷静にきちんとやることが大事
- ログ
ssh www.example.com の入出力をwww.example.com.20150920_11:10:05.logに記録する。
script -q -c "ssh www.example.com" www.example.com.20150920_11:10:05.log
wrapper化する
ファイル名: lssh
#!/bin/bash
NOW=$(date +%Y%m%d_%H%M%S)
exec script -q -c "ssh $1" $1.$NOW.log
chmod a+x lssh
./lssh localhost
状況確認コマンド
障害発生時の状況を確認するためのコマンド
システムの稼働時間、ログインユーザ数、ロードアベレージ
w
入力結果
17:21:04 up 9:53, 1 user, load average: 0.06, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
shunsuke pts/0 10.211.55.2 17:16 0.00s 0.04s 0.00s w
ネットワーク接続数、接続元、接続先、実行プロセスをPID
※実行プロセスとPIDを確認するためにはrootユーザーになる必要がある。
ssh -lnp
入力結果
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :::22 :::* users:(("sshd",1177,4))
LISTEN 0 128 *:22 *:* users:(("sshd",1177,3))
LISTEN 0 10 127.0.0.1:25 *:* users:(("sendmail",1830,4))
LISTEN 0 128 127.0.0.1:9050 *:* users:(("php-fpm",1850,7),("php-fpm",1851,0),("php-fpm",1852,0),("php-fpm",1853,0),("php-fpm",1854,0),("php-fpm",1855,0))
LISTEN 0 50 *:3306 *:* users:(("mysqld",1789,13))
LISTEN 0 128 *:6379 *:* users:(("redis-server",1879,5))
LISTEN 0 128 :::6379 :::* users:(("redis-server",1879,4))
LISTEN 0 128 *:80 *:* users:(("nginx",1868,6),("nginx",1869,6),("nginx",1870,6),("nginx",1871,6),("nginx",1872,6))
起動しているプロセスの確認
ps auxf
ディスク容量を確認
df -h
CPU,利用率、メモリ利用量、CPU使用率が高いプロセスを確認
top -b -d 1 -n 1
メモリ利用量が大きいプロセスを確認
top -b -d 1 -n 1 -a
CPU使用率、ネットワーク利用量、ディスクI/O量、ページング量と推移
dstat -taf 1 10
入力結果
----system---- -------cpu0-usage--------------cpu1-usage--------------cpu2-usage--------------cpu3-usage------ --dsk/sda-----dsk/sr0-----dsk/sr1-- net/docker0---net/eth0->
date/time |usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ: read writ: read writ| recv send: recv send>
23-07 17:31:56| 0 0 99 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0|8527B 10k: 4B 0 : 4B 0 | 0 0 : 0 0 >
23-07 17:31:57| 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 : 0 0 : 0 0 | 0 0 : 66B 146B>
23-07 17:31:58| 1 1 98 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 : 0 0 : 0 0 | 0 0 : 66B 1860B>
23-07 17:31:59| 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 : 0 0 : 0 0 | 0 0 : 66B 626B>
23-07 17:32:00| 0 0 100 0 0 0: 1 0 99 0 0 0: 0 0 100 0 0 0: 0 0 100 0 0 0| 0 0 : 0 0 : 0 0 | 0 0 : 66B 626B>
SQLプロセス確認
mysqladmin -uroot processlist --verbose
もし原因がわからない場合は、 strace
などで実行中のプロセスにアタッチも可能。
strace からプロセスを起動させるのではなく、デーモンのようにすでに実行されているプロセスの動作を strace で確認するには -p オプションを使用します
strace -p [pid]
参考文献
- Webエンジニアが知っておきたいインフラの基本