> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Como Usar getRecentPerformanceSamples

> Aprenda casos de uso de getRecentPerformanceSamples, exemplos de código, parâmetros de solicitação, estrutura de resposta e dicas.

O método RPC [`getRecentPerformanceSamples`](https://www.helius.dev/docs/api-reference/rpc/http/getrecentperformancesamples) fornece um instantâneo do desempenho recente da rede Solana. Ele retorna uma lista de amostras, coletadas aproximadamente a cada 60 segundos, detalhando o número de transações e slots processados nesses períodos. Esses dados são inestimáveis para monitorar o throughput e a saúde da rede. Para mais contexto sobre métricas de desempenho do Solana, como TPS e tempos de slot, você pode ler o [guia Solana para Empresas](https://www.helius.dev/blog/solana-for-enterprise).

## Casos de Uso Comuns

* **Monitoramento de Saúde da Rede:** Acompanhe as taxas de processamento de transações e produção de slots para avaliar a saúde geral da rede e identificar possíveis congestionamentos ou lentidões.
* **Análise de Desempenho:** Analise dados de desempenho histórico para entender o comportamento da rede em diferentes condições.
* **Dashboarding:** Exiba indicadores chave de desempenho (KPIs) como transações por segundo (TPS) e slots por minuto em painéis de monitoramento.
* **Planejamento de Capacidade:** Observe tendências na carga da rede para informar decisões de escalonamento de aplicativos ou infraestrutura.

## Parâmetros de Solicitação

1. **`limit`** (`usize`, opcional):
   * O número das amostras de desempenho mais recentes a serem retornadas.
   * Valor máximo: `720` (representando aproximadamente 12 horas de dados, pois as amostras são coletadas a cada 60 segundos).
   * Se omitido, o nó RPC retornará um número padrão de amostras (o padrão exato pode variar de acordo com o provedor RPC).

## Estrutura de Resposta

O campo `result` da resposta JSON-RPC é um array de objetos de amostras de desempenho, retornados em ordem cronológica reversa (amostra mais recente primeiro). Cada objeto possui a seguinte estrutura:

* **`slot`** (`u64`): O número do slot em que essa amostra de desempenho foi registrada.
* **`numTransactions`** (`u64`): O número total de transações (incluindo transações de voto e não voto) processadas durante o `samplePeriodSecs` levando a este `slot`.
* **`numSlots`** (`u64`): O número de slots que foram processados durante o `samplePeriodSecs` levando a este `slot`.
* **`samplePeriodSecs`** (`u16`): A duração, em segundos, sobre a qual esta amostra foi coletada (tipicamente `60`).
* **`numNonVoteTransactions`** (`u64`): O número de transações que não foram transações de voto de consenso, processadas durante o `samplePeriodSecs`.

## Exemplos

### 1. Obter as Últimas 5 Amostras de Desempenho

Este exemplo solicita as cinco amostras de desempenho mais recentes da rede.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getRecentPerformanceSamples",
      "params": [5]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchRecentPerformance() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const samples = await connection.getRecentPerformanceSamples(5);
      if (samples && samples.length > 0) {
        console.log(`Fetched ${samples.length} performance samples:`);
        samples.forEach((sample, index) => {
          console.log(`--- Sample ${index + 1} ---`);
          console.log(`  Slot: ${sample.slot}`);
          console.log(`  Number of Slots in Period: ${sample.numSlots}`);
          console.log(`  Total Transactions: ${sample.numTransactions}`);
          console.log(`  Non-Vote Transactions: ${sample.numNonVoteTransactions}`);
          console.log(`  Sample Period (seconds): ${sample.samplePeriodSecs}`);
          const tps = sample.numTransactions / sample.samplePeriodSecs;
          const nonVoteTps = sample.numNonVoteTransactions / sample.samplePeriodSecs;
          console.log(`  Average TPS (Total): ${tps.toFixed(2)}`);
          console.log(`  Average TPS (Non-Vote): ${nonVoteTps.toFixed(2)}`);
        });
      } else {
        console.log('No performance samples returned.');
      }
    } catch (error) {
      console.error('Error fetching recent performance samples:', error);
    }
  }

  fetchRecentPerformance();
  ```
</CodeGroup>

### 2. Obter o Número Padrão de Amostras de Desempenho

Este exemplo omite o parâmetro `limit`, solicitando o número padrão de amostras do nó RPC.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getRecentPerformanceSamples"
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection } = require('@solana/web3.js');

  async function fetchDefaultPerformanceSamples() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const samples = await connection.getRecentPerformanceSamples(); // No limit parameter
      if (samples && samples.length > 0) {
        console.log(`Fetched ${samples.length} (default) performance samples:`);
        // Process or log samples as needed - e.g., the first one
        const sample = samples[0];
        console.log(`--- Most Recent Sample ---`);
        console.log(`  Slot: ${sample.slot}`);
        console.log(`  Total Transactions: ${sample.numTransactions}`);
        console.log(`  Non-Vote Transactions: ${sample.numNonVoteTransactions}`);
        console.log(`  Slots in Period: ${sample.numSlots}`);
        console.log(`  Sample Period (seconds): ${sample.samplePeriodSecs}`);
      } else {
        console.log('No performance samples returned.');
      }
    } catch (error) {
      console.error('Error fetching default performance samples:', error);
    }
  }

  fetchDefaultPerformanceSamples();
  ```
</CodeGroup>

## Dicas para Desenvolvedores

* **Intervalo de Amostragem:** As amostras são tipicamente coletadas a cada 60 segundos, mas esta é uma aproximação. O campo `samplePeriodSecs` na resposta indica a duração real de cada amostra.
* **Limite de Dados Históricos:** O máximo `limit` de 720 amostras fornece uma janela de aproximadamente 12 horas de dados históricos. Para análise de desempenho a longo prazo, é necessário registro e agregação de dados externos.
* **Transações de Voto vs. Não Voto:** `numTransactions` inclui todas as transações, enquanto `numNonVoteTransactions` conta especificamente aquelas que não fazem parte do processo de votação de consenso. O último é frequentemente um melhor indicador de atividade de rede impulsionada pelo usuário.
* **Variabilidade do Nó:** Os dados exatos podem variar ligeiramente entre diferentes nós RPC, dependendo do estado de sincronização e da visão local da rede quando uma amostra é coletada.

Utilizando `getRecentPerformanceSamples`, desenvolvedores e observadores da rede podem obter insights valiosos sobre o status operacional e o throughput da rede Solana.
