GNU/Linux >> Linux Esercitazione >  >> Linux

Come funzionano i limiti del descrittore di file Linux?

Vuoi invece guardare /proc/sys/fs/file-max

Dal recente linux/Documentation/sysctl/fs.txt:

file-max &file-nr:

Il kernel alloca gli handle di file dinamicamente, ma ancora non li libera di nuovo.

Il valore in file-max denota il numero massimo di file-handle che il kernel Linux allocherà. Quando ricevi molti messaggi di errore sull'esaurimento degli handle di file, potresti voler aumentare questo limite.

Storicamente, i tre valori in file-nr indicavano il numero di file handle allocati, il numero di file handle allocati ma non utilizzati e il numero massimo di file handle. Linux 2.6 riporta sempre 0 come numero di handle di file liberi -- questo non è un errore, significa solo che il numero di handle di file assegnati corrisponde esattamente al numero di handle di file usati.

I tentativi di allocare più descrittori di file rispetto a file-max vengono segnalati con printk, cerca "VFS:file-max limitreached".

EDIT:l'errore sottostante probabilmente non è il sistema che esaurisce i descrittori di file globali, ma solo il tuo processo. Sembra probabile che il problema sia il limite massimo di dimensioni di select.


Non sembra che tu stia raggiungendo il limite del descrittore di file di sistema. Vedi questa risposta.

Forse il processo del tuo server utilizza select ed è quindi limitato a 1024 descrittori? Se passi a un altro meccanismo, ad es. poll non sarai più limitato a 1024 descrittori.

select() funziona con fd_set s

Questo proviene dalla documentazione POSIX di select.h:

Quanto segue deve essere definito come una macro:

FD_SETSIZE

Maximum number of file descriptors in an fd_set structure.

Prova a trovare o emettere FD_SETSIZE sul tuo sistema.

Se ritieni che FD_SETSIZE sia troppo basso per te, preferirei provare ad allontanarmi da select piuttosto che cercare di aumentare FD_SETSIZE che in genere è più difficile.


Linux
  1. Come gestire le capacità dei file Linux

  2. Come trovare un file in Linux

  3. Come creare un file di scambio in Linux

  4. Come svuotare un file di registro in Linux

  5. Come montare un file iso in Linux

Come collegare simbolicamente un file in Linux

Come modificare il limite di file aperti in Linux

Come lavorare con hardlink e softlink in Linux

Come crittografare file su Linux

Come disabilitare lo scambio in Linux

Come usare gzip in Linux?