※一時解消はできたが原因解明には至らず。
Dockerの勉強の一環で、Twitterの投稿から画像リンク(コスプレ関係)のurlを収集して一覧しているwebサービスをEC2インスタンス一つにDockerコンテナで構築している。
構成
appサーバーコンテナ:Nginx、uWSGI、Django
dbサーバーコンテナ:Postgresql
appサーバーコンテナで10分に1度スクレイピングを実行している。
現象
先日urlを叩いてみるとステータスコード500のNginxのエラー表示画面になっていた。
nginxのエラーログを見てみると
2019/03/22 14:31:17 [alert] 13#13: *9631 write() to "/var/log/nginx/access.log" failed (28: No space left on device) while logging request, client: (ip_address), server: , request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:8000", host: "cos.mixmaru.com"
調査
ディスク容量が無いと言われているっぽいので、dfコマンドで調べてみたが容量は残っている。(というか、それほど容量を食うような事はしていないはず)
コンテナ側で容量制限などに引っかかっているのかと思い、docker-compose exec app bash
で中に入ろうとしたが、
failed to write all bytes for _bisect.so
とエラーが出て入れず。
調べるとi-nodeを使い切っているとの事らしい。
df -i
を実行してみるとたしかに100%になっているものがある。
なにか細かいファイルを大量に作成しているのだろうか、、?
一時対応
ここまで調べた時点でとりあえず、docker-compose restart
を実行したらi-nodeの数が3%まで減って正常にアクセスできるようになった。