CentOS(Linux)で監視数の上限を超えてエラーが発生したときの対処
はじめに
こんにちは、SHIFT の開発部門に所属しているmurasawaです。今期より中途で入社、バックエンド関連の開発を担当して行きます。
現在、研修でデータベースやRestAPIについて基本的な事から学んでいます。学んだことをアウトプットし理解を深めていくとともに技術の共有として役に立てば幸いです。
原因
Linuxではinotifyという仕組みを使ってファイル監視を行っています。
監視を行う処理がシステムで設定されている監視対象ファイルの上限数を超えたときに発生するエラーです。デフォルトでは上限数が8192に設定されていて、監視数がこの値を超えたため下記
Error: ENOSPC: System limit for number of file watchers reached
のエラーが発生します。
上限数の確認方法
以下コマンドで確認できます。
$ cat /proc/sys/fs/inotify/max_user_watches
出力
8192
対応方法
一時的
sysctlで一時的に上限数を上げることができます。
最大値は1048576です。
再起動等するとデフォルトの値に戻るので確認の際に使用してください。
$ sudo sysctl fs.inotify.max_user_watches=16384
fs.inotify.max_user_watches = 16384
確認
$ cat /proc/sys/fs/inotify/max_user_watches
16382
恒久的
設定を恒久的に反映させたい場合は以下のコマンドを実行します。
大きな数値にしすぎるとパフォーマンスに影響する可能性があります。
必要な分だけ数値を上げて下さい。
$ echo fs.inotify.max_user_watches=16382 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
終わりに
特にメモリに制約のある環境にいる場合は、必要以上に上限数を上げないことをお勧めします。各ファイルウォッチは540バイト(32ビット)または約1kB(64ビット)を使用するため、1048576ウォッチがすべて消費されると仮定すると、上限は約512MB(32ビット)または1048MB(64ビット)になります。
__________________________________
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/