Sem limites!! Todos nós podemos gostar de não ter limites, mas é realmente uma boa ideia?? Em geral, quando não há limites, "Haverá dragões". O mesmo vale para limits.conf, mesmo que para servidores de teste, um limite verdadeiramente ilimitado.conf ajuda!
O que é limites.conf?
a limits.conf
O arquivo contém as configurações de limite de recursos para o sistema operacional Linux. Quando o seu computador Linux foi instalado, o arquivo foi criado como parte da instalação e continha valores para recursos como tamanho da memória virtual, o número máximo de arquivos e mais.
Esses valores são definidos para limites predefinidos para garantir que seu sistema Linux não seja facilmente sobrecarregado. Caso contrário, um programa ou procedimento invasor pode facilmente interromper um sistema que funciona de outra forma. Imagine, como um exemplo, uma situação em que você define o número máximo de arquivos abertos como ilimitado, e um procedimento fraudulento (o que é um procedimento com falha, ou mesmo um software malicioso, como um vírus ou malware) agora comece a abrir o arquivo. depois do arquivo no sistema.
Em breve, o sistema ficará sem um recurso de que precisa para lidar com todos esses arquivos abertos. Se o processador em seu sistema (a CPU), ou memória ou mesmo disco em alguns casos, Onde, como um exemplo, podemos ter definido o tamanho máximo do arquivo do kernel como ilimitado, e executamos grandes processos em um sistema com muita memória e pouco espaço livre restante, ou uma pequena unidade de raiz.
Em resumo, usando o limits.conf
arquivo de configuração, um usuário (o administrador de sistemas) você pode especificar limites sobre os recursos disponíveis para o usuário e para o sistema.
O formato do limits.conf
Arquivo (residente em /etc/security/
) está bem definido. Geralmente, iremos especificar um domínio aplicável (como um usuário, um grupo e até curingas como *
), um tipo (limite suave ou rígido), um elemento ao qual a regra se relaciona (como ele nofile
elemento que define o número máximo de arquivos abertos, a locks
elemento que define o número máximo de travas de arquivo que um usuário pode manter, etc.) e finalmente um valor (a configuração real / máxima).
O cabeçalho do limits.conf
arquivo claramente afirma que com uma quantidade apropriada de detalhes:
Se você quiser ler mais sobre cada item específico e outras configurações com o limits.conf
Arquivo, apenas corra:
limites do homem.conf
No indicador do seu terminal.
Vá ilimitado
Em geral, para todos os efeitos, nunca se deve ir ilimitado com limits.conf
. Então, Você pode perguntar, por que este post? Nós vamos, sempre que há uma regra, há uma exceção válida. A exceção, nesta circunstância, é para testar servidores. Ao realizar testes ou trabalho de controle de qualidade de qualquer tipo, muitas vezes você vai encontrar os limites de um sistema.
Definir as coisas como ilimitado, com configuração adequada da estrutura de teste / controle de qualidade para cuidar da gestão de recursos do sistema, é uma exceção válida para manter limites razoáveis e específicos do sistema dentro limits.conf
. Para todos os outros servidores, como se indica, uma configuração por servidor é preferida e recomendada.
Sem mais preâmbulos, vamos apresentar um script que define todas as variáveis e opções em limits.conf
para ilimitado. Este script é baseado na licença GPLv2. setup_server.sh script no repositório mariadb-qa no GitHub. Além disso, você pode estar interessado em explorar este script para outros arquivos que você pode adotar para configurações ilimitadas para uma configuração de servidor de teste., como um exemplo /etc/sysctl.conf
configurações e /etc/systemd/logind.conf
Para configurar um servidor como ilimitado, execute o seguinte script no prompt do terminal do servidor (de prova) você deseja definir como ilimitado.
Aviso: tenha em mente que fazer isso em uma máquina de produção provavelmente não é uma boa ideia, a menos que você tenha um conhecimento sólido da mudança que está fazendo, como explicado em parte neste post, e está fazendo isso por um motivo específico e válido. Fazer essa alteração também tem implicações de segurança significativas., e é recomendado fazê-lo apenas em uma máquina que esteja atrás de um firewall e VPN, Em outras palavras, não é um servidor público. TLDR; Prosseguir com a implementação é por sua própria conta e risco.
Você também deve saber que usar um número alto (maior que ~ 20000) para nproc soft e hard pode causar instabilidade do sistema e trava no Centos 7, mesmo quando não está no Ubuntu 18, 19 e 20. Mim, e outros engenheiros comigo, nós usei esta configuração por algum tempo para testar servidores, e para essa aplicação, é ideal. Por favor, note que todas as configurações são ilimitadas, exceto nofile
para o qual 1048576 é o máximo.
sudo bash -c "gato << EOF > /etc/segurança/limites.conf
* núcleo macio ilimitado
* núcleo duro ilimitado
* dados suaves ilimitados
* dados difíceis ilimitados
* fsize macio ilimitado
* fsize duro ilimitado
* memlock macio ilimitado
* memlock difícil ilimitado
* nofile macio 1048576
* nofile difícil 1048576
* soft rss ilimitado
* hard rss ilimitado
* pilha macia ilimitada
* pilha dura ilimitada
* cpu suave ilimitado
* cpu difícil ilimitado
* macio nproc ilimitado
* hard nproc ilimitado
* macio como ilimitado
* duro como ilimitado
* maxloginas macias ilimitadas
* maxloginas duras ilimitadas
* maxsysloginas macias ilimitadas
* maxsysloginas duras ilimitadas
* fechaduras macias ilimitadas
* travas duras ilimitadas
* sigpending suave ilimitado
* sigpending difícil ilimitado
* macia msgqueue ilimitado
* hard msgqueue unlimited
EOF"
Depois de executar este, apenas reinicie o seu servidor para carregar todas as novas definições de configuração. Você não notará nenhuma diferença, exceto que o seu teste é executado, se eles consumissem muitos recursos, eles não vão mais parar em vários problemas de definição de limites.
Tendo dito isto, como afirmado anteriormente, vai precisar, como parte de sua estrutura de teste, um robusto watchdog e procedimento de monitoramento de recursos do servidor para garantir que seu servidor não seja usado em demasia, o que muitas vezes resulta em travamentos e requisitos de reinicialização. Em uma postagem futura, é possível que forneça o básico para tal script de onde você pode expandi-lo para cobrir sua própria configuração.
Final
Existem casos de uso válidos para configurar /etc/security/limits.conf
para todos os máximos possíveis. Em geral, São raros (e os servidores de teste são uma exceção notável).
Neste post, nós aprendemos mais sobre limits.conf
: porque existe e como mudar sua configuração. Nós exploramos o limits.conf
formato, sintaxe e expressões idiomáticas e listou um script simples que pode determinar todas as nossas configurações como ilimitadas.
Mesmo se você quiser configurar seu servidor para limites mais baixos, o script é fácil de adaptar e pode ser integrado (como código GPLv2 conforme descrito) em seus próprios scripts: Apenas mude unlimited
para os valores desejados. Esta também é uma maneira simples de configurar rapidamente um servidor com as configurações desejadas e, por isso, unifique e codifique seu farm de servidores. limits.conf
configuração.
Desfrutar!