Atualmente, estou enfrentando um problema em uma caixa Linux onde, como root, tenho comandos retornando erro porque o limite de exibição do inotify foi atingido.
# tail -f /var/log/messages
[...]
tail: cannot watch '/var/log/messages': No space left on device
# inotifywatch -v /var/log/messages
Establishing watches...
Failed to watch /var/log/messages; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.`
Pesquisei um pouco no Google e toda solução que encontrei é aumentar o limite com:
sudo sysctl fs.inotify.max_user_watches=<some random high number>
Mas não consegui encontrar nenhuma informação sobre as consequências de aumentar esse valor. Eu acho que o valor padrão do kernel foi definido por uma razão, mas parece inadequado para usos específicos. (por exemplo, ao usar o Dropbox com um grande número de pastas ou software que monitora muitos arquivos)
Então, aqui estão as minhas questões:
- É seguro aumentar esse valor e quais seriam as consequências de um valor muito alto?
- Existe uma maneira de descobrir quais são os relógios atualmente configurados e qual processo os define para poder determinar se o limite atingido não é causado por um software com defeito?
Respostas:
É seguro aumentar esse valor e quais seriam as consequências de um valor muito alto?
Sim, é seguro aumentar esse valor e abaixo estão os possíveis custos [ fonte ]:
Para verificar o número máximo de relógios inotify:
Para definir o número máximo de relógios inotify
Temporariamente:
sudo sysctl fs.inotify.max_user_watches=
com o seu valor preferido no final.Permanentemente ( informações mais detalhadas ):
fs.inotify.max_user_watches=524288
em suas configurações de sysctl. Dependendo do seu sistema, eles podem estar em um dos seguintes locais:/etc/sysctl.conf
/etc/sysctl.d/
, por exemplo/etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian / RedHat) ousysctl --system
(Arch)Verifique se o número máximo de relógios inotify foi atingido:
Use
tail
com a-f
opção (seguir) em qualquer arquivo antigo, por exemplotail -f /var/log/dmesg
: - Se tudo estiver bem, ele mostrará as últimas 10 linhas e pausará; abortar com Ctrl-C - Se você estiver sem relógios , ele falhará com este erro um tanto enigmático :Para ver o que está usando os relógios inotify
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: 1 , 2 ].
fonte
I guess very few codes need the values higher than the default
O Dropbox pode exigir um limite mais alto, dependendo de quantos arquivos você possui. Iv'e levantou a minha sem problemas. de fato, a notificação da caixa de depósito (que ocorre quando atinge o limite) explicitamente solicita que você a aumente./etc/sysctl.conf
/etc/sysctl.d
também funciona em sistemas mais novos baseados em RedHat.