パソコン初心者なので温かい目で見ていただけると幸いです。
20GB SSDのホストマシン上にDockerコンテナを幾つか立てており、その内の一つのコンテナで問題が起きたため、質問させていただこうと思いました。
そのコンテナでは、起動時にinit.shというスクリプトを実行するようにしていました。
bash
1#!/bin/sh 2 3/etc/init.d/php5-fpm start 4service nginx start 5while true; do 6 python hoge.py 7 sleep 300 8done
nginxでは、httpsサービスを立ち上げるようにしており、hoge.pyが諸事情から5分に1回アクセスするようにしていました。
コンテナ監視ツールにて、ログにhoge.pyのTracebackが記録されており、確認したところ、
hogeuser@hogepiyofuga:/# pstree init.sh---sleep
のようになっていました。
想定では、以下のようになるはずでした
hogeuser@hogepiyofuga:/# pstree init.sh---nginx ---php5-fpm ---sleep
なぜかと思い、調べてみると、nginx statusで起動していないことが確認できました。
hogeuser@hogepiyofuga:/# service nginx status * nginx is not running
nginxコマンドでも起動しようとしたところ、原因と思しき出力を確認できました
hogeuser@hogepiyofuga:/# nginx nginx [emerg] open() "/run/nginx.pid" failed (28: No space left on device)
どうやら、nginx.pidの置かれているファイルシステム上の空き容量が無いためにnginx.pidをopen() (ファイルが無いため、まず新規作成する動作になると思われる)しようとしても失敗してしまったものとみられます。
試しにtouchコマンドでnginx.pidを作成しようと試みると以下のようになりました。
hogeuser@hogepiyofuga:/run# touch nginx.pid touch: cannot touch 'nginx.pid': No space left on device
先ほどと同じことを言ってきました。
このような現象に遭遇した場合、どのように対処すれば良いか、ご教授お願いいたします。
[2016/7/16 23:23 追記]
実際に、/runにて容量を確認してみました。(通常の出力だと見づらくなってしまったため、少し編集しています)
hogeuser@hogepiyofuga:/run# df -h . |Filesystem |Size| Used| Avail| Use%| Mounted on| |-----------------------------|----|-----|------|-----|-----------| |/dev/mapper/docker-*****... |10G | 10G | 24k | 100%| / |
余裕が24kあるにもかかわらず、100%となっています。
使用率が100%なので、no space left on deviceとなるのも納得ですが、pidファイルを作成するぐらいなら24kで事足りそうな気もするのですが、ダメなのでしょうか・・・
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。