O teste de desempenho e o teste de carga são processos importantes para ajudar a garantir que você esteja pronto para a produção. Para testar os clusters do Couchbase Server, há um utilitário de linha de comando de código aberto chamado "cbc-pillowfight". Ele faz parte do libcouchbase.

Antes de começar

Você precisará de um cluster do Couchbase Server instalado e em execução. Você pode testá-lo diretamente em sua máquina local (baixar o Couchbase para Linux, Windows e Mac) ou em um Contêiner do Docker.

Se estiver apenas experimentando o pillowfight, talvez queira criar um bucket em seu cluster apenas para essa finalidade. Criei um bucket chamado "pillow".

Depois de instalar o Couchbase Server, você precisará baixar e instalar a libcouchbase:

  • Mac: brew install libcouchbase
  • Windows: baixar um arquivo zip (o mais recente no momento em que este artigo foi escrito é o libcouchbase-2.8.1)

Para obter mais informações, incluindo instruções sobre o Linux, consulte o site Notas de versão da libcouchbase.

Luta de travesseiros para testes de desempenho

Se você usou o homebrew para instalar em um Mac, pode digitar cbc-pillowfight --help imediatamente para a tela de ajuda da linha de comando.

No Windows, descompacte o arquivo zip libcouchbase onde desejar. Você encontrará cbc-pillowfight.exe no caixa pasta.

Performance testing tools

A briga de travesseiros mais simples que você pode fazer é:

.\cbc-pillowfight.exe -U couchbase://localhost/pillow -u Administrator -P password

Isso é para uma linha de comando do Windows Powershell, mas será muito semelhante em outros sistemas operacionais.

Um pillow fight será iniciado para o cluster em execução no seu computador local (localhost), com o usuário "Administrator" que tem a senha "password" (seu nome de usuário e senha podem ser diferentes).

Starting pillowfight

Você deverá ver uma mensagem como "Thread 0 has finished populating".

O que é uma guerra de travesseiros?

Nesse ponto, o pillowfight começará a criar, atualizar e ler documentos do bucket "pillow". Ele fará todas essas operações ("ops") de acordo com as configurações da linha de comando que você especificar (ou voltará aos padrões).

Por exemplo, com o -I você pode especificar o número total de documentos que deseja operar. O padrão é 1000. Portanto, se você executar o comando acima, logo verá 1000 documentos aparecerem no balde de travesseiros.

Ele não cria apenas 1.000 documentos e sai. O Pillowfight continuará "obtendo" e "atualizando" esses documentos até que você encerre o processo. Ele é chamado de "pillowfight" porque colocará seu cluster do Couchbase em uma batalha (com esforço real), mas na verdade é mais uma simulação de batalha.

Enquanto a luta está acontecendo, você pode monitorar as estatísticas do bucket para ver o desempenho do cluster sob carga.

Performance testing monitoring

Enquanto digito este texto, a ventoinha do meu laptop está vibrando enquanto testo o cluster do Couchbase de nó único que instalei nele. (Suspeito que meu desktop doméstico criaria um conjunto de gráficos muito mais impressionante, mas Estou viajando muito este mês).

Há muitas estatísticas disponíveis para você analisar em nível de balde. Dê uma olhada no Documentação do Couchbase Server sobre estatísticas de monitoramento para obter mais detalhes.

Opções para testes de desempenho

As configurações padrão do pillowfight podem não ser ideais para o tipo de aplicativo que você usará com o Couchbase. Há muitas maneiras de ajustar o pillow fight para que ele se adapte melhor aos seus casos de uso. Para obter a lista completa de opções, digite cbc-pillowfight --help na linha de comando.

Mas aqui estão algumas opções notáveis que você pode querer experimentar:

  • -I ou --num-items com um número, para especificar em quantos documentos você deseja operar.
  • --json para usar cargas úteis JSON nos documentos. Por padrão, os documentos são criados com cargas úteis não JSONmas talvez você queira ter documentos JSON reais para testar outros aspectos do desempenho enquanto a luta de travesseiros estiver em execução.
  • -e para expirar documentos após um determinado período de tempo. Se estiver usando o Couchbase como cache ou armazenamento de curto prazo, convém usar essa configuração para monitorar o efeito da expiração dos documentos.
  • --subdoc para usar a API de subdocumento. Nem toda operação precisará ser feita em um documento inteiro.
  • -M ou --max-size para definir um limite máximo para o tamanho dos documentos. Talvez você queira ajustar isso para adequar um tamanho de documento mais realista ao seu sistema. Há uma opção correspondente -m e --min-size também.

Aqui está outro exemplo usando as opções acima:

.\cbc-pillowfight.exe -U couchbase://localhost/pillow -u Administrator -P password -I 10000 --json -e 10 --subdoc -M 1024

Isso iniciará um pillowfight usando 10.000 documentos JSON, que expiram após 10 segundos, usam a API de subdocumento e têm um tamanho máximo de documento de 1024 bytes.

Observação: há um -t --num-threads opção. Atualmente, se você estiver usando o Windows (como eu), estará limitado a um único thread (consulte este código).

Resumo

O Couchbase tem um compromisso com o desempenho. Fazemos testes extensivos de desempenho para garantir que estamos fornecendo a velocidade que você espera. Confira as postagens recentes do blog em nosso Motor de armazenamento de plasma e Aprimoramentos do N1QL. Mas ninguém conhece seu caso de uso e sua infraestrutura melhor do que você. Com o pillowfight, você tem uma ferramenta para ajudá-lo a fazer testes de desempenho, testes de carga e testes de estresse.

Agradecemos a Sergey Avseyev por ajudar com esta postagem no blog, e seu contribuições para a libcouchbase.

Entre em contato com perguntas sobre o Couchbase deixando um comentário abaixo ou encontrando-me em Twitter @mgroves.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

2 Comentários

  1. Parece que não consigo fazer isso funcionar. Estou tentando o comando básico em um prompt de comando do Windows (administrador):
    cbc-pillowfight.exe -U couchbase://ar-sql-01 -u Some_User -p Some_Password

    A resposta é:
    Falha na conexão: A autenticação falhou. Você pode ter fornecido uma combinação inválida de nome de usuário/senha

    No entanto, em meu projeto do Visual Studio, usando "couchbase://ar-sql-01" como a primeira e única entrada para servidores e Some_User/Some_Password para UserName e Password, respectivamente, minha conexão (e todas as funções) funciona perfeitamente, portanto, sei que o nome de usuário e a senha estão corretos. Alguma ideia?

    1. NM. Eu estava usando -p para a senha, em vez de -P (observe a diferença de maiúsculas e minúsculas). Além disso, tive que adicionar / à string de conexão. Talvez isso possa ajudar outra pessoa?

Deixar uma resposta