Benchmarks do Valkey Queue
Esta página registra a campanha confirmatória do perfil Valkey Queue nos planos queue-free, starter, basic, premium e enterprise. Os testes mediram mensagens JSON usando Pub/Sub e aprovaram apenas candidatos com zero perda e p99 abaixo de 100 ms.
Status dos dados: valores da campanha corrigida. Cada capacidade publicada passou por três execuções de 30 segundos; P50, P90, P95 e P99 são o pior valor observado entre essas execuções. O primeiro rejeitado só aparece quando foi medido na mesma busca.
O formato final de cada resultado será:
| Payload | Capacidade validada | Taxa operacional segura | Mensagens | P50 | P90 | P95 | P99 | Primeiro rejeitado |
|---|
A capacidade validada é a maior taxa aprovada. A taxa operacional segura é 80% dela, arredondada para baixo em múltiplos de 50 msg/s. O primeiro rejeitado delimita a fronteira observada.
Quando a coluna “Primeiro rejeitado” estiver como não medido, a taxa é o maior
candidato confirmado daquela campanha, mas a fronteira superior ainda não foi
medida.
Plano queue-free
| Recurso | Configuração |
|---|---|
| vCPU | 0,25 |
| Memória RAM | 256 MiB |
| Armazenamento persistente | 1 GB |
O armazenamento persistente faz parte dos recursos do plano, mas não torna o Pub/Sub persistente. Mensagens publicadas em Pub/Sub podem ser perdidas quando um assinante desconecta.
Resultados confirmados
| Payload | Capacidade | Taxa segura | Mensagens | P50 | P90 | P95 | P99 | Primeiro rejeitado |
|---|---|---|---|---|---|---|---|---|
| 256 B | 850/s | 650/s | 76.502 | 12,48 ms | 15,27 ms | 50,69 ms | 90,82 ms | 900/s |
| 1 KiB | 600/s | 450/s | 54.002 | 0,64 ms | 8,38 ms | 49,59 ms | 99,49 ms | 1.050/s |
| 4 KiB | 500/s | 400/s | 45.003 | 13,93 ms | 16,00 ms | 48,90 ms | 84,63 ms | 550/s |
| 16 KiB | 150/s | 100/s | 13.502 | 3,40 ms | 7,31 ms | 38,91 ms | 70,54 ms | 200/s |
Em todos os pontos publicados acima houve zero mensagens perdidas, duplicadas ou fora de ordem. Os valores são uma referência desta execução e não representam um SLA: rede, região, cliente, TLS e carga concorrente podem alterar o resultado.
Plano queue-starter
| Recurso | Configuração |
|---|---|
| vCPU | 0,5 |
| Memória RAM | 512 MiB |
O armazenamento persistente do plano não foi informado nesta rodada e não é inferido a partir deste benchmark.
Resultados confirmados
| Payload | Capacidade | Taxa segura | Mensagens | P50 | P90 | P95 | P99 | Primeiro rejeitado |
|---|---|---|---|---|---|---|---|---|
| 256 B | 1.600/s | 1.250/s | 144.004 | 0,82 ms | 3,09 ms | 5,91 ms | 53,47 ms | 1.650/s |
| 1 KiB | 1.550/s | 1.200/s | 139.505 | 1,08 ms | 1,62 ms | 8,85 ms | 79,73 ms | 1.600/s |
| 4 KiB | 600/s | 450/s | 54.002 | 14,48 ms | 15,02 ms | 15,95 ms | 42,30 ms | 700/s |
| 16 KiB | 150/s | 100/s | 13.502 | 16,83 ms | 17,92 ms | 20,66 ms | 49,12 ms | 200/s |
Em todos os pontos do queue-starter houve zero mensagens perdidas, inválidas,
duplicadas ou fora de ordem. Os recursos do plano são informativos; o
resultado continua sujeito às condições da execução.
Plano queue-basic
| Recurso | Configuração |
|---|---|
| vCPU | 1 |
| Memória RAM | 1 GiB |
| Armazenamento persistente | 5 GB |
Resultados confirmados
| Payload | Capacidade | Taxa segura | Mensagens | P50 | P90 | P95 | P99 | Primeiro rejeitado |
|---|---|---|---|---|---|---|---|---|
| 256 B | 7.250/s | 5.800/s | 652.510 | 11,92 ms | 16,56 ms | 22,91 ms | 45,83 ms | 7.320/s |
| 1 KiB | 2.850/s | 2.250/s | 256.507 | 12,46 ms | 13,45 ms | 14,04 ms | 18,42 ms | 2.900/s |
| 4 KiB | 843/s | 650/s | 75.873 | 13,55 ms | 20,52 ms | 29,47 ms | 38,04 ms | 887/s |
| 16 KiB | 100/s | 50/s | 9.001 | 15,99 ms | 16,82 ms | 16,93 ms | 18,96 ms | 150/s |
Em todos os pontos do queue-basic houve zero mensagens perdidas, inválidas,
duplicadas ou fora de ordem. Os recursos do plano são informativos; o
resultado continua sujeito às condições da execução.
Plano queue-premium
| Recurso | Configuração |
|---|---|
| vCPU | 2 |
| Memória RAM | 2 GB |
| Armazenamento persistente | 5 GB |
Resultados confirmados
| Payload | Capacidade | Taxa segura | Mensagens | P50 | P90 | P95 | P99 | Primeiro rejeitado |
|---|---|---|---|---|---|---|---|---|
| 256 B | 7.900/s | 6.300/s | 711.018 | 2,54 ms | 56,14 ms | 68,32 ms | 92,78 ms | 7.950/s |
| 1 KiB | 3.950/s | 3.150/s | 355.506 | 0,88 ms | 1,48 ms | 2,54 ms | 6,32 ms | 4.000/s |
| 4 KiB | 2.000/s | 1.600/s | 180.005 | 1,45 ms | 2,82 ms | 6,86 ms | 20,00 ms | não medido |
| 16 KiB | 300/s | 200/s | 27.002 | 3,41 ms | 3,68 ms | 3,94 ms | 7,38 ms | 350/s |
Em todos os pontos do queue-premium houve zero mensagens perdidas, inválidas,
duplicadas ou fora de ordem. Os recursos do plano são informativos; o
resultado continua sujeito às condições da execução.
Plano queue-enterprise
| Recurso | Configuração |
|---|---|
| vCPU | 8 |
| Memória RAM | 8 GB |
| Armazenamento persistente | 5 GB |
Resultados confirmados
| Payload | Capacidade | Taxa segura | Mensagens | P50 | P90 | P95 | P99 | Primeiro rejeitado |
|---|---|---|---|---|---|---|---|---|
| 256 B | 6.350/s | 5.050/s | 571.510 | 1,23 ms | 14,92 ms | 20,79 ms | 43,70 ms | 6.400/s |
| 1 KiB | 3.550/s | 2.800/s | 319.509 | 1,34 ms | 3,12 ms | 7,89 ms | 42,53 ms | 3.600/s |
| 4 KiB | 850/s | 650/s | 76.503 | 2,04 ms | 2,63 ms | 3,15 ms | 7,88 ms | 900/s |
| 16 KiB | 150/s | 100/s | 13.503 | 16,86 ms | 17,87 ms | 19,13 ms | 25,56 ms | não medido |
Em todos os pontos do queue-enterprise houve zero mensagens perdidas,
inválidas, duplicadas ou fora de ordem. Os recursos do plano são informativos;
o resultado continua sujeito às condições da execução.
Como o benchmark funciona
O script Node.js usa iovalkey e duas conexões separadas: uma para
PUBLISH e outra para SUBSCRIBE. Cada mensagem JSON recebe um identificador
da rodada, um número sequencial e um timestamp monotônico. O assinante usa
esses campos para contar perdas, duplicações, ordem e latência.
Para cada tamanho de JSON, o script aquece a conexão por 10 segundos, encontra um intervalo de sucesso e falha por busca exponencial, refina a fronteira por busca binária e confirma o candidato em três execuções independentes de 30 segundos. O relatório calcula P50, P90, P95 e P99 por execução e usa o pior valor entre as confirmações.
Este resultado mede Pub/Sub com um publicador e um assinante. Não mede Streams, consumer groups, confirmação, replay, recuperação de pendências ou durabilidade de tarefas. Para trabalho de negócio que não pode ser perdido, consulte o padrão recomendado de Streams e consumer groups.