Dzisiaj mój serwer uległ awarii z Too many open files in system:
, ale ja już mają wysokie wartości, jaka jest maksymalna wartość tego?
Czuję, że w Google nie ma dobrych wyników w tym zakresie, wyjaśniając, co należy wziąć pod uwagę przy ustawianiu tych wartości, po prostu mówią, aby ustawić je na 100 000.
Mam serwer z 32 GB pamięci RAM, który używa teraz tylko 10 GB, zakładam, że zwiększenie limitów plików do bardzo wysokich wartości zwiększy użycie pamięci RAM, czy jest jakiś wzór, którego możesz użyć do obliczenia tego? Jak w przypadku 8 GB pamięci RAM, może mieć X otwartych plików?
Bieżące ustawienia:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Komentarze
Odpowiedź
Jak mówi Kusalananda, zwiększenie file-max
nie będzie miało bezpośredniego wpływu na użycie pamięci, ale pozwoli procesom otwierać więcej deskryptorów plików, co będzie miało efekt domina (zarówno ze śledzenia opisów plików w jądrze, jak i zwiększonej pamięci użycie w procesach używających tych opisów i deskryptorów) – komentarze jądra sugerują około jeden kilobajt na plik dla danych jądra i zmniejszą domyślną wartość file-max
(8192), jeśli to się skończy co stanowi ponad 10% pamięci podczas uruchamiania systemu ( tj. jest tylko 80 MB pamięci RAM). Maksymalna wartość narzucona przez jądro to maksymalna wartość, która może być przechowywana w zmiennej typu long
w C twojej architektury.
Jeśli zwiększysz file-max
, należy również zwiększyć inode-max
; dokumentacja jądra mówi, że powinno to być „3-4 razy większe niż wartość w file-max, ponieważ stdin, stdout i gniazda sieciowe również wymagają struktury i-węzła, aby poradzić sobie z nimi. ”
Zwróć uwagę, że naciśnięcie file-max
spowoduje wyświetlenie w dzienniku jądra komunikatu„ VFS: maksymalny limit pliku n osiągnięty ”Z odpowiednią wartością n . Jeśli nie masz tego w swoich dziennikach, albo nie trafiasz file-max
, albo zbyt często filtrujesz dzienniki (jest to komunikat dziennika na poziomie informacyjnym).
(file-max
nie ogranicza procesów za pomocą CAP_SYS_ADMIN
, więc naciśnięcie go nie zatrzyma wszystkiego).
Komentarze
- Więc nie ma żadnych wad w posiadaniu arbitralnie wysokich liczb? Nie ' nie widzę
inode-max
w moim systemie? Ubuntu 16.04 tutaj. Chcę tylko zapobiec ponownej awarii serwera, uruchamiam wiele usług internetowych na tym serwerze i nie ' nie przejmuję się wykorzystaniem zasobów. - Wadą jest to, że niekontrolowane procesy nie zostaną złapani przez ogólny limit opisów plików, więc mogą spowodować głód zasobów w inny sposób.
ulimit
pokaże / ustawi limit zasobów na proces.