Para resolver esse problema é preciso alterar o valor de
max_user_watches em
inotify, cada relógio inotify usado ocupa 540 bytes (sistema de 32 bits) ou 1 kB (duplo em 64 bits). Isso sai da memória do kernel, que não pode ser trocada. Supondo que você definiu o máximo em 524288 e todos foram usados (improvável), você usaria aproximadamente 256 MB / 512 MB de memória do kernel de 32 bits / 64 bits.
Observe que seu aplicativo também utilizará memória adicional para acompanhar os identificadores inotify, os caminhos de arquivo no diretório etc.
Para verificar o número máximo de relógios inotify:
cat /proc/sys/fs/inotify/max_user_watches
No
Debian esse valor padrão é 8192, para definir o número máximo de relógios inotify temporariamente:
sudo sysctl fs.inotify.max_user_watches=524288
Troque 524288 pelo valor de sua preferência.
Para definir o número máximo de relógios inotify definitivamente:
sudo -i
# echo "fs.inotify.max_user_watches=524288" |tee -a /etc/sysctl.conf
# sysctl -p
# exit
Permanentemente (informações mais detalhadas):
Coloque
fs.inotify.max_user_watches=524288 nas configurações do
sysctl. Dependendo do seu sistema, eles podem estar em um dos seguintes locais:
- Debian / RedHat: /etc/sysctl.conf
- Arch: coloque um novo arquivo em /etc/sysctl.d/, por exemplo /etc/sysctl.d/40-max-user-watches.conf
Você pode recarregar as configurações do sysctl para evitar uma reinicialização:
- Debian / RedHat: sysctl -p
- Arch: sysctl --system
Verifique se o número máximo de relógios inotify foi atingido:
Use tail com a opção -f (follow) em qualquer arquivo antigo, por exemplo:
tail -f /var/log/dmesg
Se estiver tudo bem, mostrará as últimas 10 linhas e fará uma pausa; abortar com Ctrl-C - se você estiver sem relógio, falhará com este erro um tanto enigmático:
tail: cannot watch '/var/log/dmsg': No space left on device
Para ver o que está usando os relógios inotify:
find /proc/*/fd -lname anon_inode:inotify | cut -d/ -f3 | xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' | uniq -c | sort -nr
A primeira coluna indica o número de inotify fds (embora não seja o número de relógios) e a segunda mostra o PID desse processo.
Fontes
Bom saber, comecei a estudar React essa semana. No meu Debian o valor padrão está bem acima que o da dica, 1048576. Creio que não terei o problema nessa máquina rsrs.