Oggi il mio server si è bloccato con Too many open files in system:
ma io hanno già valori alti, qual è un valore massimo per questo?
Mi sembra che non ci siano buoni risultati su Google per questo, spiegando cosa è necessario prendere in considerazione per impostare questi valori, dicono semplicemente di impostarlo come 100k.
Ho un server RAM da 32 GB che utilizza solo 10 GB in questo momento, presumo che aumentare i limiti dei file a valori molto alti aumenterà lutilizzo della RAM, esiste un qualche tipo di formula che puoi usare per calcolarlo? Come per 8 GB di ram tu può avere un numero X di file aperti?
Impostazioni correnti:
cat /proc/sys/fs/file-max 100000 ulimit -Hn 1048576 ulimit -Sn 1024
Commenti
Rispondi
Come dice Kusalananda, aumentando file-max
non avrà un impatto diretto sulluso della memoria, ma consentirà ai processi di aprire più descrittori di file che avranno un effetto a catena (sia dal tracciamento delle descrizioni dei file nel kernel, sia dallaumento della memoria utilizzo nei processi che utilizzano tali descrizioni e descrittori) – i commenti del kernel suggeriscono circa un kilobyte per file per i dati del kernel e ridurranno il valore predefinito di file-max
(8192) se ciò finisce rappresenta più del 10% della memoria allavvio del sistema ( cioè ci sono solo 80 MiB di RAM). Il valore massimo imposto dal kernel è il valore massimo che può essere memorizzato in una variabile di tipo long
in C sulla tua architettura.
Se aumenti file-max
, dovresti anche aumentare inode-max
; la documentazione del kernel dice che dovrebbe essere “3-4 volte più grande del valore in file-max, poiché anche stdin, stdout e socket di rete necessitano di una struttura inode per gestirli. “
Nota che premendo file-max
verrà visualizzato un messaggio di registro del kernel che dice” VFS: limite massimo file n raggiunto “, Con il valore appropriato per n . Se non ce lhai nei tuoi log, o non stai premendo file-max
o stai filtrando troppo i tuoi log (è un messaggio di log a livello di informazioni).
(file-max
non limita i processi con CAP_SYS_ADMIN
, quindi premerlo non fermerà tutto.)
Commenti
- Quindi non cè svantaggio nellavere numeri arbitrariamente alti? Non ' non vedo
inode-max
nel mio sistema, dovunque? Ubuntu 16.04 qui. Voglio solo evitare che il mio server si blocchi di nuovo, eseguo più servizi web su questo server e non ' mi interessa lutilizzo delle risorse - Lo svantaggio è che i processi runaway non verranno catturati dal limite generale sulle descrizioni dei file, quindi potrebbero causare la fame di risorse in altri modi.
ulimit
mostrerà / imposterà un limite di risorse per processo.