本サイトではアフィリエイト広告を利用しています。
2020/02/26
エラー System limit for number of file watchers reachedの対応
React Nativeでアプリを開発しているときに、developmentサーバを立ち上げようとすると以下のエラーが発生しました。
Error: ENOSPC: System limit for number of file watchers reached,
Node.jsなどを利用しているときに発生することがある様子で、Linuxでファイル監視を行う処理がシステムで設定されている監視対象ファイルの上限数に到達すると起こります。 原因と対応方法について備忘のためにまとめました。
概要
- 原因
- inotifyの状態を確認
- 一時的な対応
- 恒久的な対応
原因
Linuxではinotifyという仕組みを使ってファイル監視を行っています。 システムのデフォルトで監視対象の上限数が8192に設定されており、割と簡単にこれを越えることが有ります。
inotifyの状態を確認
以下コマンドで上限数の設定を確認できます。
cat /proc/sys/fs/inotify/max_user_watches
一時的な対応
一時的に変更したいだけであれば以下のsysctlを使って変更できます。
sudo sysctl fs.inotify.max_user_watches=24288
変更後はもう一度設定内容を確認して、変更内容が正しいことを確認しましょう。
恒久的な対応
設定をずっと書き換えておきたい場合は以下のコマンドを実行します。 大きな数値にしすぎるとパフォーマンスに影響するかもしれません。必要な分だけ数値を上げることが望ましいです。 どれくらいの数値が必要なのかを調べる方法がわからないので、動かしてみないとわかりません。 いったん、2倍ずつ上げていくとか段階を踏んですこしずつ増やしていくのがおすすめです。
echo fs.inotify.max_user_watches=24288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
おわりに
それほど難しい問題でなくてよかったです。いつか、また同じエラーが出たら、ここにメモしたことを思い出して対処します。