Obecnie mam problem z linuksem, w którym jako root mam polecenia zwracające błąd, ponieważ osiągnięto limit obserwowania inotify.
# 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'.`
Trochę googlowałem i każde znalezione przeze mnie rozwiązanie polega na zwiększeniu limitu o:
sudo sysctl fs.inotify.max_user_watches=<some random high number>
Ale nie byłem w stanie znaleźć żadnych informacji na temat konsekwencji podniesienia tej wartości. Domyślam się, że domyślna wartość jądra została ustawiona z jakiegoś powodu, ale wydaje się, że jest nieodpowiednia do określonych zastosowań. (np. w przypadku korzystania z Dropbox z dużą liczbą folderów lub oprogramowania, które monitoruje wiele plików)
Oto moje pytania:
- Czy podniesienie tej wartości jest bezpieczne i jakie byłyby konsekwencje zbyt wysokiej wartości?
- Czy istnieje sposób, aby dowiedzieć się, jakie są obecnie ustawione zegarki i który proces ustawia je, aby móc ustalić, czy osiągnięty limit nie jest spowodowany przez wadliwe oprogramowanie?
Odpowiedzi:
Czy podniesienie tej wartości jest bezpieczne i jakie byłyby konsekwencje zbyt wysokiej wartości?
Tak, bezpiecznie jest podnieść tę wartość, a poniżej są możliwe koszty [ źródło ]:
Aby sprawdzić maksymalną liczbę zegarków inotify:
Aby ustawić maksymalną liczbę zegarków inotify
Tymczasowo:
sudo sysctl fs.inotify.max_user_watches=
na końcu z preferowaną wartością.Na stałe ( bardziej szczegółowe informacje ):
fs.inotify.max_user_watches=524288
do ustawień sysctl. W zależności od systemu mogą znajdować się w jednym z następujących miejsc:/etc/sysctl.conf
/etc/sysctl.d/
, np/etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian / RedHat) lubsysctl --system
(Arch)Sprawdź, czy osiągnięto maksymalną liczbę zegarków inotify:
Użyj
tail
z-f
opcją (śledź) na dowolnym starym pliku, np .tail -f /var/log/dmesg
: - Jeśli wszystko jest w porządku, wyświetli 10 ostatnich linii i pauza; przerwij z Ctrl-C - jeśli nie masz zegarków , zakończy się niepowodzeniem z tym nieco tajemniczym błędem :Aby zobaczyć, co zużywa zegarki inotify
Pierwsza kolumna wskazuje liczbę niezotwierdzonych fds (ale nie liczbę zegarków), a druga pokazuje PID tego procesu [źródła: 1 , 2 ].
źródło
I guess very few codes need the values higher than the default
Dropbox może wymagać wyższego limitu, w zależności od liczby posiadanych plików. Iv'e podniosła moją bez żadnych problemów. w rzeczywistości powiadomienie dropbox (które pojawia się, gdy osiągnie limit) wyraźnie mówi o jego podniesieniu./etc/sysctl.conf
/etc/sysctl.d
także działa na nowszych systemach RedHat oparte.