Entro i limiti! A tutti noi potrebbe piacere non avere limiti, ma è davvero una buona idea? Generalmente, quando non ci sono limiti, 'ci saranno draghi'. Lo stesso vale per limit.conf, anche se per server di prova, unlimits.conf davvero illimitato aiuta!!
Che cos'è limiti.conf?
il limits.conf
Il file contiene le impostazioni del limite di risorse per il sistema operativo Linux. Quando il tuo computer Linux è stato installato, il file è stato creato come parte dell'installazione e conteneva valori per risorse come la dimensione della memoria virtuale, il numero massimo di file e altro.
Questi valori sono impostati su limiti preimpostati per garantire che il tuo sistema Linux non venga facilmente sovraccaricato. Caso opposto, un programma o una procedura non autorizzati potrebbe facilmente fermare un sistema altrimenti funzionante. Immaginare, come esempio, una situazione in cui imposti il numero massimo di file aperti su illimitato, e una procedura fraudolenta (cos'è una procedura con un errore?, o anche un software dannoso come un virus o un malware) ora inizia ad aprire il file. dopo il file sul sistema.
Prossimamente, il sistema esaurirà le risorse necessarie per gestire tutti questi file aperti. Se il processore nel tuo sistema (la CPU), o memoria o addirittura disco in alcuni casi, dove, come esempio, potremmo aver impostato la dimensione massima del file del kernel come illimitata, ed eseguiamo grandi processi su un sistema con molta memoria e poco spazio libero rimanente, o un piccolo disco di root.
In sintesi, usando il limits.conf
file di configurazione, un utente (l'amministratore di sistema) è possibile specificare limiti alle risorse a disposizione dell'utente e del sistema.
Il formato del limits.conf
file (residente in /etc/security/
) è ben definito. In genere, specificheremo un dominio applicabile (come utente, un gruppo e anche caratteri jolly come *
), un tipo (limite morbido o duro), un elemento a cui si riferisce la norma (Come la nofile
elemento che imposta il numero massimo di file aperti, il locks
elemento che imposta il numero massimo di blocchi di file che un utente può mantenere, eccetera.) e infine un valore (la configurazione effettiva / massimo).
L'intestazione del limits.conf
il file lo afferma chiaramente con un'adeguata quantità di dettagli:
Se vuoi saperne di più su ogni elemento specifico e altre impostazioni di configurazione con il limits.conf
file, corri:
limiti uomo.conf
Al prompt del tuo terminale.
vai illimitato
Generalmente, a tutti gli effetti, non si dovrebbe mai andare senza limiti limits.conf
. Quindi, Puoi chiedere, perché questo post? Bene, sempre che ci sia una regola, esiste una valida eccezione. L'eccezione, in questa circostanza, è per testare i server. Quando si eseguono test o lavori di controllo della qualità di qualsiasi tipo, ti imbatterai spesso nei limiti di un sistema.
Imposta le cose su illimitato, con una corretta configurazione del framework di test / controllo di qualità per prendersi cura della gestione delle risorse del sistema, costituisce una valida eccezione per mantenere limiti ragionevoli e specifici del sistema entro limits.conf
. Per tutti gli altri server, come indicato, è preferibile e consigliata una configurazione per server.
Senza più preamboli, introduciamo uno script che imposta tutte le variabili e le opzioni in limits.conf
a illimitato. Questo script è basato sulla licenza GPLv2. setup_server.sh script nel repository mariadb-qa su GitHub. Inoltre, potresti essere interessato ad esplorare questo script per altri file che puoi adottare verso configurazioni illimitate per una configurazione del server di prova., come esempio /etc/sysctl.conf
impostazioni e /etc/systemd/logind.conf
Per configurare un server come illimitato, eseguire il seguente script al prompt del terminale del server (test) vuoi impostare come illimitato.
Avvertimento: tieni presente che farlo su una macchina di produzione probabilmente non è una buona idea a meno che tu non abbia una solida comprensione del cambiamento che stai apportando, come spiegato in parte in questo post, e lo fa per un motivo specifico e valido. Apportare questa modifica ha anche importanti implicazioni sulla sicurezza., e si consiglia di farlo solo su una macchina protetta da firewall e VPN, In altre parole, non è un server pubblico. TLDR; Procedere con l'implementazione è a proprio rischio.
Dovresti anche sapere che per usare un numero alto (maggiore di ~ 20000) per nproc soft e hard può causare instabilità del sistema e si blocca su Centos 7, anche quando non è in Ubuntu 18, 19 e 20. Me, e altri ingegneri con me, abbiamo usato questa configurazione per un po' di tempo per testare i server, e per tale applicazione, è l'ideale. Si prega di notare che tutte le impostazioni sono illimitate tranne nofile
per cui 1048576 è il massimo.
sudo bash -c "gatto << EOF > /etc/security/limits.conf
* soft core illimitato
* hard core illimitato
* dati soft illimitati
* dati rigidi illimitati
* soft fsize illimitato
* hard fsize illimitato
* soft memlock illimitato
* hard memlock illimitato
* nessun file morbido 1048576
* nofile duro 1048576
* soft RSS illimitato
* hard rss illimitato
* pila morbida illimitata
* hard stack illimitato
* CPU soft illimitata
* CPU dura illimitata
* soft nproc illimitato
* hard nproc illimitato
* morbido come illimitato
* difficile quanto illimitato
* soft maxlogin illimitato
* hard maxlogin illimitato
* soft maxsyslogins illimitato
* hard maxsyslogins illimitato
* soft lock illimitato
* serrature illimitate
* soft signpending illimitato
* hard sign illimitato
* coda di messaggistica soft illimitata
* hard msgqueue unlimited
EOF"
Una volta eseguito questo, riavvia semplicemente il tuo server per caricare tutte le nuove impostazioni di configurazione. Non noterai alcuna differenza, tranne che il test viene eseguito, se fossero molto dispendiose in termini di risorse, non si fermeranno più a vari problemi di definizione dei confini.
Avendo detto questo, come detto in precedenza, avrà bisogno, come parte del tuo framework di test, un robusto watchdog e una procedura di monitoraggio delle risorse del server per garantire che il tuo server non sia abusato, che spesso si traduce in blocchi e requisiti di riavvio. In un prossimo post, è possibile che fornisca le basi per tale script da cui è possibile espanderlo per coprire la propria configurazione.
Fine
Ci sono casi d'uso validi da configurare /etc/security/limits.conf
a tutti i massimi possibili. Generalmente, Sono rari (e i server di test sono un'eccezione notevole).
In questo post, abbiamo imparato di più su limits.conf
: perché esiste e come cambiarne la configurazione. Esploriamo il limits.conf
formato, sintassi e modi di dire e ha elencato un semplice script che può determinare tutte le nostre impostazioni come illimitate.
Anche se vuoi configurare il tuo server su limiti inferiori, lo script è facile da adattare e può essere integrato (come codice GPLv2 come descritto) nei tuoi script: basta cambiare unlimited
ai valori desiderati. Questo è anche un modo semplice per configurare rapidamente un server con le impostazioni desiderate e, perché, unifica e codifica la tua server farm. limits.conf
collocamento.
Godere!