> ## 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.

# Cara Menggunakan getRecentPerformanceSamples

> Pelajari kasus penggunaan getRecentPerformanceSamples, contoh kode, parameter permintaan, struktur respons, dan tips.

Metode RPC [`getRecentPerformanceSamples`](https://www.helius.dev/docs/api-reference/rpc/http/getrecentperformancesamples) menyediakan ringkasan performa terkini jaringan Solana. Metode ini mengembalikan daftar sampel yang diambil kira-kira setiap 60 detik, dengan perincian jumlah transaksi dan slot yang diproses dalam periode tersebut. Data ini sangat berguna untuk memantau laju pemrosesan dan kondisi jaringan. Untuk konteks lebih lanjut mengenai metrik performa Solana seperti TPS dan waktu slot, Anda dapat membaca [panduan Solana untuk Perusahaan](https://www.helius.dev/blog/solana-for-enterprise).

## Kasus Penggunaan Umum

* **Pemantauan Kondisi Jaringan:** Pantau laju pemrosesan transaksi dan produksi slot untuk menilai kondisi jaringan secara keseluruhan serta mengidentifikasi potensi kepadatan atau perlambatan.
* **Analisis Performa:** Analisis data performa historis untuk memahami perilaku jaringan dalam berbagai kondisi.
* **Dasbor:** Tampilkan indikator performa utama (KPI), seperti transaksi per detik (TPS) dan slot per menit, pada dasbor pemantauan.
* **Perencanaan Kapasitas:** Amati tren beban jaringan untuk mendukung keputusan penskalaan aplikasi atau infrastruktur.

## Parameter Permintaan

1. **`limit`** (`usize`, opsional):
   * Jumlah sampel performa terbaru yang akan dikembalikan.
   * Nilai maksimum: `720` (mewakili data selama kurang lebih 12 jam karena sampel diambil setiap 60 detik).
   * Jika dihilangkan, node RPC akan mengembalikan jumlah sampel default (nilai default yang tepat dapat berbeda menurut penyedia RPC).

## Struktur Respons

Kolom `result` dalam respons JSON-RPC adalah array objek sampel performa yang dikembalikan dalam urutan kronologis terbalik (sampel terbaru terlebih dahulu). Setiap objek memiliki struktur berikut:

* **`slot`** (`u64`): Nomor slot tempat sampel performa ini dicatat.
* **`numTransactions`** (`u64`): Jumlah total transaksi (termasuk transaksi voting dan non-voting) yang diproses selama `samplePeriodSecs` menjelang `slot` ini.
* **`numSlots`** (`u64`): Jumlah slot yang diproses selama `samplePeriodSecs` menjelang `slot` ini.
* **`samplePeriodSecs`** (`u16`): Durasi dalam detik saat sampel ini diambil (biasanya `60`).
* **`numNonVoteTransactions`** (`u64`): Jumlah transaksi yang bukan merupakan transaksi voting konsensus dan diproses selama `samplePeriodSecs`.

## Contoh

### 1. Mendapatkan 5 Sampel Performa Terakhir

Contoh ini meminta lima sampel performa terbaru dari jaringan.

<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. Mendapatkan Jumlah Default Sampel Performa

Contoh ini menghilangkan parameter `limit` sehingga meminta jumlah sampel default dari node 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>

## Tips untuk Developer

* **Interval Pengambilan Sampel:** Sampel biasanya diambil setiap 60 detik, tetapi angka ini merupakan perkiraan. Kolom `samplePeriodSecs` dalam respons menunjukkan durasi aktual setiap sampel.
* **Batas Data Historis:** Nilai maksimum `limit` sebesar 720 sampel menyediakan rentang data historis selama kurang lebih 12 jam. Untuk analisis performa jangka panjang, diperlukan pencatatan dan agregasi data eksternal.
* **Transaksi Voting vs. Non-Voting:** `numTransactions` mencakup semua transaksi, sedangkan `numNonVoteTransactions` secara khusus menghitung transaksi yang bukan bagian dari proses voting konsensus. Nilai kedua sering kali menjadi indikator yang lebih baik untuk aktivitas jaringan yang digerakkan oleh pengguna.
* **Variabilitas Node:** Data yang tepat mungkin sedikit berbeda di antara node RPC karena bergantung pada status sinkronisasi dan tampilan lokalnya terhadap jaringan saat sampel diambil.

Dengan menggunakan `getRecentPerformanceSamples`, developer dan pengamat jaringan dapat memperoleh wawasan berharga mengenai status operasional dan laju pemrosesan jaringan Solana.
