Ajuste de desempenho
Stampa- 24
Número Máximo de Trabalhadores
Aumente o número de trabalhadores definindo Número máximo de trabalhadores para sua contagem total de CPU. Isso permitirá que o Plesk utilize um processamento multi-core. Por exemplo, se você tiver um servidor com 8 CPUs, defina como 8.
Lembre-se de que cada trabalhador também aloca de 70 a 100 MB de RAM. Multiplique isso por um número de trabalhadores e você obterá a quantidade total de RAM adicional necessária para alterar essa configuração.
Servidor Linux
Para um sistema de alto desempenho tentando atender milhares de clientes de rede simultâneos, os parâmetros padrão do kernel do Linux geralmente são muito baixos. Considere fazer as seguintes alterações
- Aumente o máximo de arquivos abertos para 100.000 do padrão (normalmente 1024). No Linux, todo soquete de rede aberto requer um descritor de arquivo. Aumentar esse limite garantirá que
TIME_WAIT
soquetes remanescentes e outros consumidores de descritores de arquivo não afetem nossa capacidade de lidar com muitas solicitações simultâneas. - Diminua o tempo que os soquetes permanecem no
TIME_WAIT
estado diminuindotcp_fin_timeout
de seu padrão de 60 segundos para 10. Você pode diminuir ainda mais, mas muito baixo, e pode ocorrer erros de fechamento de soquete em redes com muito jitter. Também definiremostcp_tw_reuse
para informar ao kernel que ele pode reutilizar soquetes noTIME_WAIT
estado. - Aumente o intervalo de portas para portas efêmeras (saída), diminuindo a porta mínima para 10.000 (normalmente 32.768) e aumentando a porta máxima para 65.000 (normalmente 61.000). Importante: Isso significa que você não pode ter um software de servidor que tente se conectar a uma porta acima de 9999! Se você precisar vincular a uma porta superior, digamos 10075, apenas modifique esse intervalo de portas adequadamente.
- Aumente os buffers TCP de leitura/gravação (
tcp_rmem
etcp_wmem
) para permitir tamanhos de janela maiores. Isso permite que mais dados sejam transferidos sem ACKs, aumentando a taxa de transferência. Não ajustaremos a memória TCP total (tcp_mem
), pois ela é ajustada automaticamente com base na memória disponível pelo Linux. - Diminua o parâmetro VM
swappiness
, que desencoraja o kernel de trocar memória para disco. Por padrão, o Linux tenta trocar processos ociosos de forma bastante agressiva, o que é contraproducente para processos de servidor de longa duração que desejam baixa latência. - Aumente a janela de congestionamento do TCP e desative a reversão para o início lento do TCP depois que a conexão estiver ociosa. Por padrão, o TCP começa com um único segmento pequeno, aumentando-o gradualmente em um a cada vez. Isso resulta em lentidão desnecessária que afeta o início de cada solicitação – o que é especialmente ruim para o HTTP.
- Parâmetros do Kernel
Para começar, edite /etc/sysctl.conf
e adicione estas linhas:
# /etc/sysctl.conf # Discourage Linux from swapping idle processes to disk (default = 60) # Increase ephermeral IP ports # Increase Linux autotuning TCP buffer limits # Make room for more TIME_WAIT sockets due to more clients, # Disable TCP slow start on idle connections # If your servers talk UDP, also up these limits # Disable source routing and redirects # Log packets with impossible addresses for security |
Como algumas dessas configurações podem ser armazenadas em cache pelos serviços de rede, é melhor reinicializar para aplicá-las adequadamente ( sysctl -p
não funciona de maneira confiável).
Descritores de arquivos abertos
Além da fs.file-max
configuração do kernel do Linux acima, precisamos editar mais alguns arquivos para aumentar os limites do descritor de arquivo. O motivo é que o acima apenas define um máximo absoluto, mas ainda precisamos informar ao shell quais são nossos limites de sessão por usuário.
Então, primeiro edite /etc/security/limits.conf
para aumentar nossos limites de sessão:
/etc/security/limits.conf # allow all users to open 100000 files # alternatively, replace * with an explicit username * soft nofile 100000 * hard nofile 100000 |
Em seguida, /etc/ssh/sshd_config
precisa certificar-se de usar o PAM:
# /etc/ssh/sshd_config # ensure we consult pam UsePAM yes |
E, finalmente, /etc/pam.d/sshd
precisa carregar o modificado limits.conf
:
# /etc/pam.d/<g class="gr_ gr_808 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del multiReplace" id="808" data-gr-id="808">sshd</g> # ensure pam includes our limits session required pam_limits.so |
Você pode confirmar que essas configurações entraram em vigor abrindo uma nova conexão ssh para a caixa e marcando ulimit
:
ulimit -n Janela de Congestionamento de TCP |
Finalmente, vamos aumentar a janela de congestionamento do TCP de 1 para 10 segmentos. Isso é feito na interface, o que o torna um processo mais manual do que nossas sysctl
configurações. Primeiro, use ip route
para encontrar a rota padrão, mostrada em negrito abaixo:
route default via 10.248.77.193 dev eth0 proto kernel 10.248.77.192/26 dev eth0 proto kernel scope link src 10.248.77.212 |
Copie essa linha e cole-a de volta no ip route change
comando, adicionando initcwnd 10
no final para aumentar a janela de congestionamento:
route change default via 10.248.77.193 dev eth0 proto kernel initcwnd 10 |
Para tornar isso persistente nas reinicializações, você precisará adicionar algumas linhas de bash como as seguintes a um script de inicialização em algum lugar. Muitas vezes, o candidato mais fácil é apenas colar essas linhas em /etc/rc.local
:
defrt=`ip route | grep "^default" | head -1` ip route change $defrt initcwnd 10 |