Carregando...
Ajuste de desempenho
imprimir
  • 0
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 diminuindo  tcp_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 definiremos  tcp_tw_reuse para informar ao kernel que ele pode reutilizar soquetes no  TIME_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 e  tcp_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
# Increase system file descriptor limit
fs.file-max = 100000

# Discourage Linux from swapping idle processes to disk (default = 60)
vm.swappiness = 10

# Increase ephermeral IP ports
net.ipv4.ip_local_port_range = 10000 65000

# Increase Linux autotuning TCP buffer limits
# Set max to 16MB for 1GE and 32M (33554432) or 54M (56623104) for 10GE
# Don't set tcp_mem itself! Let the kernel scale it based on RAM.
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.optmem_max = 40960
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Make room for more TIME_WAIT sockets due to more clients,
# and allow them to be reused if we run out of sockets
# Also increase the max packet backlog
net.core.netdev_max_backlog = 50000
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 = 10

# Disable TCP slow start on idle connections
net.ipv4.tcp_slow_start_after_idle = 0

# If your servers talk UDP, also up these limits
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192

# Disable source routing and redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0

# Log packets with impossible addresses for security
net.ipv4.conf.all.log_martians = 1

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
100000

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  sysctlconfiguraçõ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



Esta resposta lhe foi útil?

Artigos Relacionados