1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

S3 x goofys で "socket: too many open files#012"

Posted at

goofys を利用して S3 サーバをマウントして運用しているサーバにてある日突然エラーとなり、マウント失敗するようになった。 それに伴いシステム上からはS3上のファイルを閲覧できなくなってしまいました。

/var/log/messages
Jun 28 16:19:03 ip-10-0-0-12 /usr/local/bin/goofys[4007]: s3.ERROR code=RequestError msg=send request failed, err=Head https://s3-ap-northeast-1.amazonaws.com/pcloud/members: dial tcp: lookup s3-ap-northeast-1.amazonaws.com on 10.0.0.2:53: dial udp 10.0.0.2:53: socket: too many open files#012
Jun 28 16:19:06 ip-10-0-0-12 /usr/local/bin/goofys[4007]: s3.ERROR code=RequestError msg=send request failed, err=Get https://s3-ap-northeast-1.amazonaws.com/pcloud?delimiter=%2F&max-keys=1&prefix=hoge%2Ffuga%2Fpiyo%2FJBSM2YQ14P%2Fpdf%2F20170628%2FSKM_C364e16110812232.pdf%2F: dial tcp: lookup s3-ap-northeast-1.amazonaws.com on 10.0.0.2:53: dial udp 10.0.0.2:53: socket: too many open files#012

調べたところ

プロセスが開けるファイルディスクリプタの上限に達してしまうと発生するエラー

という事が判明しました。今回はAWSのS3との接点となっているgoofysのプロセスのファイルディスクリプタの上限値を超えてしまったものだと思われます。

システムのファイルディスクリプタ上限値を確認する

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15205
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024      ## ここがファイルディスクリプタ上限値
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1024 が上限値のようだ。システム上からこの数値を上回るアクセスが発生したのだろうか。

制限値を上げる

/etc/security/limits.conf
# 以下ファイル末尾にでも追記

* soft nofile 65536
* hard nofile 65536

参考サイト等あわせて65536に設定。(今までの64倍)

goofysプロセスのファイルディスクリプタ上限値を確認

/proc/(goofysプロセスID)/limits
Limit                     Soft Limit           Hard Limit           Units     

省略

Max open files            1024                 4096                 files     

1024 のまま変更されていない。

limits.conf は PAM 認証のモジュールである pam_limits.so の設定ファイルで、ログインの際に読み込まれるファイルです。

という事なので goofys に適用させる為に一度S3をアンマウントしてから再度 goofys コマンドにて接続を試みみます。

アンマウント
$ sudo kill -9 (goofysプロセスID)
$ sudo umount /your/goofys/mount/dir
マウント
$ sudo /usr/local/bin/goofys hoge /your/goofys/mount/dir/ -o rw,allow_other,--uid=48,--gid=100,--dir-mode=0775

goofys プロセスのファイルディスクリプタ上限値を確認

/proc/(goofysプロセスID)/limits
Limit                     Soft Limit           Hard Limit           Units

省略

Max open files            65536                65536                files     

無事に65536に変更されている事が確認できました。

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?