AWSのEC2でnginx動かしていたら、Disk使用率が100%になってレスポンスが返せなくなりました。
原因はnginxが巨大なログファイルを出力していたためなのですが、
dfだとdiskが喰われているのに、/に移動してdu -sh *でディレクトリごとの使用量を見てみても、
どこがdiskを喰っているのかわかりませんでした。
そこで何かのプロセスがファイルをつかんでいるだろうと調べたところ、nginxが巨大なログファイルをつかんでいました。
なぜそれがduでわからなかったかというと、実際のファイルは存在していなかったからです。
nginxの起動ユーザーはec2-userになっていたのですが、nginxはyumでインストールしたものなので、
log出力先のディレクトリのオーナーがnginxユーザーになっており、
ログがローテーとするタイミングで実ファイルへの書き込みができなくなっていて、
その存在しないファイルにずっと出力が続けられていて、ディスクを喰っていた感じです。
まずnginxのプロセスを調べました。
$ps -ef|grep nginx root 2258 1 0 2015 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf ec2-user 2259 2258 0 2015 ? 01:06:48 nginx: worker process ec2-user 2260 2258 0 2015 ? 01:06:14 nginx: worker process ec2-user 4949 4810 0 22:31 pts/0 00:00:00 grep nginx
プロセスIDが2259が開いているファイルを調べたところ、deletedな巨大なaccess.logが見つかりました。
$sudo lsof -p 2259 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 2259 ec2-user 2w REG 202,1 175662 275456 /var/log/nginx/error.log-20150528 (deleted) nginx 2259 ec2-user 4w REG 202,1 175662 275456 /var/log/nginx/error.log-20150528 (deleted) nginx 2259 ec2-user 5w REG 202,1 5977988117 275453 /var/log/nginx/access.log-20150528 (deleted)nginxを再起動すると、diskの空きが増えて、またレスポンスが返せるようになりました。
0 件のコメント:
コメントを投稿