Come posso aumentare il limite di file aperti per tutti i processi?


32

Posso usare ulimit ma penso che influisca solo sulla mia sessione di shell. Voglio che il limite sia aumentato per tutti i processi. Questo è su Red Hat.


A proposito, quale versione di Red Hat? RHEL5?
Mattdm,

Risposte:


26

La risposta di Justin ti dice come aumentare il numero di file aperti disponibili in totale per l'intero sistema. Ma penso che stai chiedendo come aumentare il limite per utente, a livello globale. La risposta a ciò è quella di aggiungere le seguenti righe a /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Dove * indica tutti gli utenti.)

C'è un po 'di documentazione di riepilogo nel file stesso e in man limits.conf. Questo è implementato tramite il pam_limits.somodulo che viene chiamato per vari servizi configurati in /etc/pam.d/.

E, devo ammetterlo, non ho idea da dove provenga quel default 1024. E credimi, ho guardato. Ho anche provato senza il modulo pam_limits configurato ed è ancora lì. Deve essere codificato da qualche parte, ma non sono esattamente sicuro di dove.


2
Hmm ... Ho impostato correttamente. Esci da SSH e torna indietro e il mio limite soft è ancora impostato su 1024. C'è qualcosa che mi manca per renderlo "attivo"? Grazie.
Joshua Pinter,

@mattdm - Vale la pena ricordare che su alcune distribuzioni Linux il file menzionato sarà sotto: /etc/limits.conf
Guy Avraham,

13

Secondo l'articolo Linux Aumenta il numero massimo di file / descrittori di file aperti (FD) , puoi aumentare il limite di file aperti aggiungendo una voce a /etc/sysctl.conf.

Aggiungere una direttiva di configurazione come segue:

fs.file-max = 100000

Quindi salva e chiudi il file. Gli utenti devono disconnettersi e riconnettersi per rendere effettive le modifiche oppure possono semplicemente digitare il comando seguente:

# sysctl -p

Puoi anche verificare le tue impostazioni con il comando:

# cat /proc/sys/fs/file-max

Sono scettico sulla necessità di disconnettersi e riconnettersi per questa particolare impostazione, che è a livello di sistema. (Questo vale praticamente per tutto in sysctl ...)
mattdm

13

Aumenta il numero massimo di file ulimit aperti in Linux

1.Passo: apri sysctl.conf e aggiungi questa riga fs.file-max = 65536

$ vi /etc/sysctl.conf

aggiungi nuova riga e

fs.file-max = 65536

salva ed esci.

2.Step:

$ vi /etc/security/limits.conf

e aggiungi sotto il menzionato

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

salva ed esci verifica max file aperto ulimit

# ulimit -a

....
open files                      (-n) 65535

6

Ma se stai cercando di aumentare il numero massimo di file aperti di un servizio come MariaDB o qualcos'altro (usando systemd ) devi farlo direttamente nel file .service

/lib/systemd/system/<servicename>.service

Sarà qualcosa del genere:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

La risposta completa è qui: aumentare nproc per i processi avviati da systemd su CentOS 7


Questo deve essere valutato, poiché l'ubiquità systemdinsieme ai suoi cambiamenti in corso stanno aumentando in tutto l'ecosistema Linux. Tuttavia, suggerirei di modificare la risposta cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/e apportare le modifiche a quel file, piuttosto che al file di servizio a livello di sistema fornito dal pacchetto.
ILMostro_7,

3

suplement:

È possibile trovare la configurazione in un altro posto: /etc/security/limits.d/*.conf

Ho dovuto modificarlo. Non ha funzionato senza di essa. Il formato è lo stesso dilimits.conf


Ho anche dovuto aggiornare questo file per consentire alle impostazioni di integrarsi completamente sui nostri server CentOS.
John Eisbrener,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.