Esta é a Parte 2 de um blog de duas partes. Parte 1 discute o serviço Index dimensionamento melhorias implementadas no Couchbase Server 7.2.2. Esta segunda parte se concentra em reduzir as despesas gerais de E/S da memória e do disco.
Reduzindo o excesso de memória para o processo do indexador
O serviço de índice do Couchbase Server tenta manter o máximo possível de dados "quentes" na memória para atender às varreduras de índice mais rapidamente. No entanto, o serviço de índice também requer alguma memória para executar atividades de gerenciamento de índice. Há muitas dessas sobrecargas de memória. No Couchbase Server 7.2.2, reduzimos muito a sobrecarga de memória com o ajuste fino dos parâmetros. Os valores atualizados dos parâmetros ajudam os clusters com configuração de baixo custo, com quase nenhum impacto no desempenho dos nós de configuração de alto custo. Veja a seguir uma lista de aprimoramentos específicos:
Redução da sobrecarga de memória da fila de mutação
O processo do indexador mantém uma fila de mutação para armazenar em cache as atualizações recebidas do serviço de dados (por meio de fluxos DCP). A cada 10 ms, o conteúdo da fila é transferido para o armazenamento do índice. Quando a operação de descarga da fila é concluída, um instantâneo de índice é criado.
Por padrão, o tamanho máximo da fila de mutação era de 256 MB. No Couchbase Server 7.2.2, o tamanho máximo da fila de mutação será determinado dinamicamente como 1% da cota de memória. Para um nó com cota de memória de 4 GB, o tamanho máximo da fila de mutação será de 40 MB.
Observe que esse não é um limite rígido. A fila sempre manterá o número mínimo necessário de mutações. No Couchbase Server 7.2.2, esse número mínimo necessário (valor padrão) também foi reduzido de 50 elementos para 30 elementos. Também implementamos o ajuste dinâmico desse número mínimo de 30 para 20 e, eventualmente, para 10, quando a memória heap em uso do processo do indexador aumenta. Quando a memória heap em uso diminui, o valor é ajustado novamente de 10 para 20 e, por fim, para 30.
Esse aprimoramento é ativado por padrão tanto para os clusters Capella quanto para os autogerenciados.
Redução do tamanho do buffer de armazenamento
Depois que as mutações são transferidas para o armazenamento do índice, elas residem nos buffers de armazenamento antes de serem processadas. O tamanho dos buffers de armazenamento é calculado como: número de threads da CPU * 200. Os buffers de armazenamento são exclusivos para cada instância/partição de índice, portanto, à medida que o número de índices aumenta, a sobrecarga devido aos buffers de armazenamento também aumenta.
No Couchbase Server 7.2.2, reduzimos o tamanho máximo dos buffers de armazenamento para: número de threads da CPU * 20. O tamanho do buffer será reduzido ainda mais se a cota de memória for menor que 16 GB. Isso reduz a sobrecarga do buffer de armazenamento em um fator de 10 ou mais. Esse aprimoramento é ativado por padrão tanto para os clusters Capella quanto para os autogerenciados.
Implementação da compactação para a fila de solicitações de instantâneos de índices
Conforme mencionado anteriormente, o processo do indexador aciona a criação de um instantâneo a cada 10 ms. Quando uma explosão de mutações é recebida, o armazenamento do índice pode ficar temporariamente mais lento, de modo que a descarga da fila de mutações pode levar mais de 10 ms. Se a situação permanecer a mesma durante alguns minutos, muitas solicitações de instantâneos de índice serão colocadas na fila.
No Couchbase Server 7.2.2, introduzimos a compactação da fila de solicitações de instantâneos de índice, o que reduz a sobrecarga de memória. Esse aprimoramento é ativado por padrão tanto para os clusters Capella quanto para os autogerenciados.
Compartilhamento de LSS entre instâncias de índice
O armazenamento de índices do Couchbase é implementado como um Armazenamento estruturado em log (LSS) para obter o melhor desempenho. Cada instância do LSS tem recursos exclusivos atribuídos a ela (arquivos de disco, buffers de descarga, etc.).
A partir do Couchbase Server 7.2.2, o Capella, por padrão, aplicará o compartilhamento de instâncias de LSS em vários nós de indexador. Se um índice já tiver sido criado com uma instância dedicada de LSS, ele continuará a usar essa instância dedicada de LSS após a atualização. Esse aprimoramento resultou em uma boa redução da sobrecarga de memória (de mais de 1 GB para menos de 30 MBpois 484 índices agora estão compartilhando 6 instâncias de LSS).
O compartilhamento de LSS é habilitado por padrão somente em clusters Capella. Para clusters autogerenciados, ele pode ser ativado usando o seguinte comando REST:
curl -X POST -u https://:9102/settings --data '{"indexer.plasma.useSharedLSS" : verdadeiro}'
Outras melhorias
Filtros Bloom
O servidor Couchbase introduziu filtros bloom para serviço de índice na versão 7.1. Mas os usuários precisam habilitá-los explicitamente. Os filtros bloom são usados pela camada de armazenamento do índice para reduzir a E/S do disco e, portanto, melhorar a eficiência geral do serviço de índice.
A partir do Couchbase Server 7.2.2, o serviço de índice terá filtros de floração ativado por padrão. Isso reduz as pesquisas em disco do serviço de índice, com uma compensação de um pequeno aumento nas despesas gerais de memória. Os filtros bloom exibem seus benefícios principalmente para as cargas de trabalho com muita inserção.
Compressão Zstd
O armazenamento de índices usa a compactação em dois casos de uso: compactação de arquivos no disco e compactação de páginas de índice na memória. Os arquivos em disco são compactados com compressão rápidaenquanto as páginas na memória são compactadas com Compressão Zstd. Devido ao uso de dois algoritmos diferentes, o armazenamento de índices teve que executar um ciclo de descompressão-compressão ao buscar as páginas de índice no disco.
A partir do Couchbase Server 7.2.2, o armazenamento de índice agora usa Compressão Zstd para arquivos em disco também. Isso evita um ciclo desnecessário de descompressão-compressão durante a busca no disco. Além disso, o Zstd é conhecido por produzir uma melhor taxa de compactação. Isso leva a uma utilização eficiente da E/S do disco em ambientes de nuvem.
O que vem a seguir?
Saiba mais sobre os produtos Couchbase:
-
- Download do servidor Couchbase
- Iniciar um avaliação gratuita do Couchbase Capella (DBaas)
- Acessar o Couchbase documentação do desenvolvedor
- Veja Quem mais está usando o Couchbase?