Header Ads

Defina uma configuração de Limites.conf completamente ilimitada para servidores de teste

Sem limites! Todos nós podemos gostar de limites, mas é realmente uma boa ideia? Normalmente, quando não há limites, & # 8216; haverá &’ haverá dragões ’. É o mesmo com o limits. conf, embora para servidores de teste, um Limites. conf realmente ilimitado ajude!

O que é limits. conf?

O arquivo limits. conf contém configurações de limite de recursos para o sistema operacional Linux. Quando 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, número máximo de arquivos e muito mais.

Esses valores são definidos para limites pré-especificados para garantir que seu sistema Linux não sobrecarregue facilmente. Caso contrário, um programa ou processo não autorizado poderia facilmente interromper um sistema com desempenho diferente. Imagine, por exemplo, uma situação em que você define o número máximo de arquivos abertos como ilimitado e um processo invasor (sendo um processo com uma falha ou mesmo um software malicioso como um vírus ou malware) agora começa a abrir o arquivo após o arquivo no sistema.

Logo o sistema ficará sem um recurso de que precisa para lidar com todos esses arquivos abertos. Seja o processador do seu sistema (a CPU), ou a memória ou mesmo o disco em alguns casos, onde por exemplo, podemos ter configurado o tamanho máximo do arquivo do núcleo como ilimitado, e executamos grandes processos em um sistema com muita memória e pouco espaço livre restante ou uma pequena unidade raiz.

Em resumo, usando o arquivo de configuração limits. conf, um usuário (ou sysadmin) pode especificar limites de recursos disponíveis para o usuário e para o sistema.

O formato do arquivo limits. conf (que reside em / etc / security /) é bem definido. Geralmente, especificaremos um domínio aplicável (como um usuário, um grupo e até mesmo curingas como *), um tipo (limite flexível ou rígido), um item ao qual a regra se relaciona (como o item nofile que define o número máximo de abrir arquivos, o item de bloqueios que define o número máximo de bloqueios de arquivo que um usuário pode manter, etc.) e, finalmente, um valor (a configuração real / máximo).

O cabeçalho do arquivo limits. conf define isso claramente em uma quantidade adequada de detalhes:

Se você gostaria de ler mais sobre cada item específico e outras definições de configuração com o arquivo limits. conf, simplesmente execute:

 man limits. conf 

No prompt do seu terminal.

Sem limites

Em geral, para todos os efeitos e propósitos, nunca se deve ir ilimitado com o limits. conf. Então, você pode perguntar, por que este artigo? Bem, sempre que houver uma regra, haverá uma exceção válida. A exceção, neste caso, é para servidores de teste. Quando você faz testes ou trabalhos de garantia de qualidade de qualquer tipo, muitas vezes você se depara com os limites de um sistema.

Configurar as coisas como ilimitadas, com uma configuração de estrutura de teste / QA adequada para cuidar do gerenciamento dos recursos do sistema, é uma exceção válida para manter limites razoáveis ​​e específicos do sistema dentro de limits. conf. Para todos os outros servidores, conforme indicado, uma configuração por servidor é preferida e recomendada.

Sem mais delongas, vamos introduzir um script que define todas as variáveis ​​e opções em limits. conf como ilimitadas. Este script é baseado no script setup_server. sh licenciado GPLv2 no repositório mariadb-qa no GitHub. Você também pode querer explorar este script para outros arquivos que você pode adotar para configurações ilimitadas para uma configuração de servidor de teste, por exemplo /etc/sysctl. conf settings e /etc/systemd/logind. conf

Para configurar um servidor para ilimitado, execute o seguinte script no prompt do terminal do servidor (teste) que você deseja configurar como ilimitado.

Aviso: observe que fazer isso em uma máquina de produção provavelmente não é uma boa ideia, a menos que você tenha um sólido entendimento da mudança que está fazendo, conforme explicado em parte neste artigo, e esteja fazendo isso para um específico e válido razão. Essa alteração também tem implicações de segurança significativas e é recomendável fazer isso apenas em uma máquina que esteja atrás de um firewall e VPN, ou seja, não em um servidor voltado para o público. TLDR; A implementação é por sua 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 travar no Centos 7, embora não no Ubuntu 18, 19 e 20. Eu e outros engenheiros comigo usamos essa configuração há algum tempo para testar servidores e, para esse aplicativo, é ideal. Observe como todas as configurações são ilimitadas, exceto nofile para o qual 1048576 é o máximo.

 sudo bash -c "cat < < EOF > /etc/security/limits. conf * soft core ilimitado * hard core ilimitado * soft data ilimitado * hard data ilimitado * soft fsize ilimitado * hard fsize ilimitado * soft memlock ilimitado * hard memlock ilimitado * soft nofile 1048576 * hard nofile 1048576 * soft rss ilimitado * hard rss ilimitado * soft stack ilimitado * hard stack ilimitado * soft cpu ilimitado * hard cpu ilimitado * soft nproc ilimitado * hard nproc ilimitado * soft como ilimitado * hard como ilimitado * soft maxlogins ilimitado * hard maxlogins ilimitado * soft maxsyslogins ilimitado * hard maxsyslogins ilimitado * soft locks ilimitado * hard locks ilimitado * soft sigpending ilimitado * hard sigpending ilimitado * soft msgqueue ilimitado * hard msgqueue ilimitado EOF "[ /PRÉ]

Depois de executar isso, simplesmente reinicie o servidor para carregar todas as novas definições de configuração. Você não notará nenhuma diferença, exceto que suas execuções de teste, se forem muito intensivas em recursos, não serão mais interrompidas em vários problemas de configuração de limite.

Dito isso, conforme indicado acima, você precisará, como parte de sua estrutura de teste, um processo de monitoramento sólido de watchdog e de recursos do servidor que garanta que seu servidor não seja usado em demasia, o que frequentemente resulta em travamentos e requisitos de reinicialização. Em um artigo futuro, posso fornecer o básico para esse tipo de script, de onde você pode expandir para cobrir sua própria configuração.

Concluindo

Existem casos de uso válidos para definir /etc/security/limits. conf para cada máximo possível. Eles geralmente são raros (com os servidores de teste sendo uma exceção notável).

Neste artigo, aprendemos mais sobre o limits. conf: por que ele existe e como alterar sua configuração. Exploramos o formato, a sintaxe e as expressões idiomáticas limit. conf e listamos um script simples que pode definir todas as nossas configurações como ilimitadas.

Mesmo se você quiser configurar seu servidor para limites menores, o script é fácil de se adaptar e pode ser integrado (como código GPLv2 conforme descrito) em seus próprios scripts: simplesmente altere ilimitado para os valores desejados. Essa também é uma maneira direta de configurar rapidamente um servidor com os valores desejados e, assim, unificar e codificar a configuração de limites. conf do seu farm de servidores.

Divirta-se!

Nenhum comentário