やる気がストロングZERO

やる気のストロングスタイル

【Docker】長期稼働でi-nodeを使い切ってしまう?

※一時解消はできたが原因解明には至らず。

Dockerの勉強の一環で、Twitterの投稿から画像リンク(コスプレ関係)のurlを収集して一覧しているwebサービスをEC2インスタンス一つにDockerコンテナで構築している。

http://cos.mixmaru.com

構成

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%まで減って正常にアクセスできるようになった。