definimos os seguintes parâmetros do kernel no arquivo99-custom.conf
more /etc/sysctl.d/99-custom.conf
net.ipv4.tcp_low_latency = 1
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_max_syn_backlog = 30000
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 5
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 2
net.ipv4.tcp_mtu_probing = 1
para definir em tempo real, os parâmetros acima, podemos usarsysctl -p /etc/sysctl.d/99-custom.conf
mas após a reinicialização, é claro, os valores desaparecerão.
então, uma maneira de resolver isso é definir o seguinte em/etc/rc.local
como
more /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run chmod +x /etc/rc.d/rc.local to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
sysctl -p /etc/sysctl.d/99-custom.conf
está acima do caminho certo?
Se o diretório
/etc/sysctl.d/
existir em sua distribuição Linux como padrão, provavelmente já possui um script de inicialização ou unidade systemd que faz o equivalente a:Em outras palavras, é provável que já exista um script ou algum outro recurso que use
sysctl -p
para ler todos*.conf
os arquivos do/etc/sysctl.d/
diretório. Mas isso pode acontecer muito cedo no processo de inicialização, quando o sistema ainda está sendo executado a partir do initramfs, então você pode precisar atualizar seu initramfs após adicionar qualquer arquivo ao/etc/sysctl.d/
. Verifique a documentação da sua distribuição para saber como fazer isso; os comandos exatos variam entre as distribuições.Mas se você mesmo criou o
/etc/sysctl.d/
diretório , o sistema não lerá automaticamente os arquivos para você. Se você se preocupa apenas com um arquivo, então a maneira como você fez isso certamente fará o trabalho por enquanto./etc/sysctl.d/99-custom.conf
/etc/rc.local
No entanto, você pode estar criando uma armadilha para si mesmo.
À medida que as soluções de automação sysadmin como Ansible e Salt se tornam cada vez mais comuns, tornou-se um padrão comum substituir (ou aumentar) arquivos de configuração singulares (como )
/etc/<something>.conf
por um diretório correspondente no qual você pode soltar qualquer número de arquivos de configuração parciais: por exemplo/etc/<something>.d/*.conf
. Normalmente, quando esse diretório é criado, o sistema que lê essa configuração é modificado para ler todos os arquivos de configuração nesse diretório que correspondem ao padrão (portanto, todos os arquivos de backup do editor etc. são evitados automaticamente). Às vezes, isso é chamado de diretório drop-in , pois você pode simplesmente soltar trechos de configuração e executar o comando para recarregar a configuração/reiniciar o serviço em questão. Isso pode tornar o gerenciamento de configuração automatizado muito fácil.Se você criar seu próprio
/etc/sysctl.d/
diretório, mas configurar apenas/etc/rc.local
para ler apenas um/etc/sysctl.d/99-custom.conf
, poderá esquecer esse fato. Então, algum dia, algumas novas configurações do sysctl precisam ser adicionadas, e você ou um de seus colegas de trabalho vê/etc/sysctl.d/
, pensa "ah, ele tem o novo esquema de diretório drop-in, então posso simplesmente adicionar minhas novas configurações/etc/sysctl.d/98-more-custom.conf
e eu 'm done"... e então tem uma surpresa desagradável quando as novas configurações são ignoradas após uma reinicialização.Portanto, se você realmente criou o
/etc/sysctl.d/
diretório, sugiro que substitua a únicasysctl -p /etc/sysctl.d/99-custom.conf
linha/etc/rc.local
pelas quatro linhas no início desta resposta. Dessa forma, seu/etc/sysctl.d/
diretório funcionará conforme o esperado, mesmo que mais*.conf
arquivos sejam adicionados a ele.Se
/etc/sysctl.d/
foi criado como padrão pelo instalador do sistema operacional, mas os*.conf
arquivos dentro dele não serão usados na inicialização, mesmo depois de reconstruir seu initramfs, você pode querer enviar um relatório de bug para os mantenedores da distribuição sobre a implementação incompleta do/etc/sysctl.d/*.conf
drop -no padrão de diretório.