Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

6 Alat Analisis Memori Redis Gratis Teratas

Saat menganalisis penggunaan memori dari instance Redis, ada banyak alat sumber terbuka dan gratis di pasar, bersama dengan segelintir produk berbayar. Beberapa yang paling populer adalah Jacks (dari semua perdagangan yang terkenal), tetapi jika Anda mencari analisis yang lebih dalam tentang masalah memori Anda, Anda mungkin lebih baik menggunakan salah satu alat yang lebih bertarget dan kurang dikenal.

Dalam postingan ini, kami telah menyusun daftar 6 alat gratis teratas yang menurut kami paling berguna dalam menganalisis penggunaan memori instance Redis kami:

  1. Penganalisis Memori Redis (RMA)
  2. Pengambil Sampel Redis
  3. Alat RDB
  4. Audit Redis
  5. Perangkat Redis
  6. Panen

1) Penganalisis Memori Redis

Redis Memory Analyzer (RMA) adalah salah satu penganalisis memori FOSS paling komprehensif yang tersedia untuk Redis. Ini mendukung tiga tingkat detail yang berbeda:

  • Global – Ikhtisar informasi penggunaan memori.
  • Pemindai – Informasi penggunaan memori level keyspace/prefix level tertinggi – dengan kata lain, prefiks umum terpendek digunakan.
  • RAM – Keyspace/prefix level terendah – dengan kata lain, digunakan prefix umum terpanjang.

Setiap mode memiliki kegunaannya sendiri- Anda bisa mendapatkan detail lebih lanjut di RMA ReadMe.

RMA – Mode Global

Dalam mode global, RMA menyediakan beberapa statistik tingkat tinggi, seperti jumlah kunci, memori sistem, ukuran set residen, ukuran ruang kunci, dll. Fitur unik adalah " keyspace overhead” yang merupakan memori yang digunakan oleh sistem Redis untuk menyimpan informasi terkait keyspace, seperti pointer untuk struktur data daftar.

RMA – Mode Pemindai

Dalam mode pemindai, kita mendapatkan gambaran umum tentang keyspace kita. Ini memberikan ruang nama tingkat tinggi (jadi a:b:1 dan a:c:1 disatukan sebagai a:*), bersama dengan jenis itemnya dan persentase memori yang dikonsumsi oleh ruang nama itu. Sangat berguna untuk memulai dengan informasi ini dan kemudian menggunakan perilaku 'RAM' yang digabungkan dengan pola namespace untuk melakukan analisis mendetail.

RMA – Mode RAM

Dalam mode RAM, kami mendapatkan konsumsi memori tingkat ruang kunci, seperti yang disediakan oleh sebagian besar penganalisis memori FOSS lainnya. Jadi di sini, a:b:1 dan a:c:1 diambil secara terpisah sebagai a:b:* dan a:c:* dan kami mendapatkan informasi mendetail tentang memori yang digunakan, ukuran data aktual, overhead, encoding, min dan TTL maks. , dll. Ini membantu menentukan pemboros memori terbesar di sistem kami.

Sayangnya, alat ini tidak selalu diperbarui (komit terakhir di GitHub lebih dari setahun yang lalu). Meski begitu, ini adalah salah satu yang terbaik yang kami temukan untuk analisis mendetail.

Penginstalan dan Penggunaan RMA:

RMA membutuhkan Python dan PIP untuk diinstal pada sistem (keduanya tersedia untuk semua OS utama). Setelah terinstal, Anda dapat menjalankan satu perintah untuk menginstal alat RDB – `pip install rma`

Ini cukup mudah digunakan dari baris perintah. Sintaksnya adalah `rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l number-of-keys-to-scan] [-b PERILAKU] [-t comma-separated-list-of-data-types-to-scan]`

Pro RMA:

  • Berfungsi dalam waktu nyata.
  • Menggunakan perintah scan untuk menelusuri database, oleh karena itu, dampak kinerjanya terbatas dan analisisnya sangat akurat.
  • Terdokumentasi dengan baik – mudah untuk menemukan contoh penggunaan.
  • Mendukung opsi penyesuaian dan pemfilteran yang andal, termasuk menganalisis tipe data tertentu saja, atau, hanya mempertimbangkan kunci yang cocok dengan pola tertentu).
  • Dapat memberikan detail pada tingkat yang berbeda – ruang nama, kunci, atau nilai global.
  • Unik di antara semua alat yang kami audit karena menunjukkan overhead struktur data (yaitu, berapa banyak memori yang digunakan untuk menyimpan informasi Redis internal seperti pointer untuk tipe data daftar ).

Kekurangan RMA:

  • Tidak mendukung pengambilan sampel probabilistik. Memindai basis data secara linier bisa sangat lambat untuk basis data besar; ada opsi untuk menghentikan pemindaian setelah sejumlah kunci dikembalikan untuk meningkatkan kinerja.
  • Ada banyak detail di output; sementara membantu para ahli, mungkin hanya membingungkan pemula.

2) Redis Sampler

Redis Sampler adalah alat yang sangat kuat yang dapat memberikan wawasan mendalam tentang penggunaan memori instance Redis. Itu dikelola oleh antirez, pengembang di balik Redis, dan pengetahuan mendalam tentang Redis ditunjukkan melalui alat ini. Alat ini tidak terlalu sering diperbarui – tetapi tidak banyak masalah yang dilaporkan.

Redis Sampler melakukan pemindaian probabilistik database dan melaporkan informasi berikut:

  • Distribusi persentase kunci di antara berbagai jenis data – berdasarkan jumlah kunci, bukan ukuran objek.
  • Kunci terbesar dari tipe string, berdasarkan strlen, dan persentase memori yang digunakan.
  • Untuk semua tipe data lainnya, kunci terbesar dihitung dan ditampilkan sebagai dua daftar terpisah:satu berdasarkan ukuran objek, dan lainnya berdasarkan jumlah item di objek.
  • Untuk setiap tipe data, ini juga menunjukkan "Distribusi kekuatan 2". Ini sangat berguna dalam memahami distribusi ukuran dalam tipe data. Output pada dasarnya merinci berapa persentase kunci dari jenis tertentu yang berukuran dalam rentang> 2^x dan <=2^x+1.

Penginstalan dan Penggunaan Redis Sampler:

Ini adalah skrip Ruby tunggal. Ini membutuhkan Ruby yang sudah diinstal. Anda juga memerlukan permata `rubygems` dan `redis` untuk diinstal. Penggunaannya cukup mudah – dari baris perintah, jalankan `./redis-sampler.rb `

Kelebihan Redis Sampler:

  • Sangat mudah digunakan – tidak ada opsi untuk menyelidiki dan memahami.
  • Outputnya mudah dipahami, bahkan untuk pemula, tetapi memiliki informasi yang cukup untuk analisis yang sangat mendetail dari instance Redis oleh para ahli. Bagian dibatasi dengan jelas dan mudah difilter.
  • Berfungsi pada semua versi Redis.
  • Tidak menggunakan perintah istimewa seperti DEBUG OBJECT, sehingga dapat digunakan di sistem apa pun, termasuk ElastiCache Amazon.
  • Ia menggunakan perintah panjang spesifik tipe data untuk mengidentifikasi ukuran data, sehingga penggunaan yang dilaporkan tidak terpengaruh oleh serialisasi.
  • Berfungsi pada data langsung. Meskipun rekomendasinya adalah untuk dijalankan pada antarmuka loopback, ini mendukung pengambilan sampel sistem jarak jauh.

Kekurangan Redis Sampler:

  • Jika ukuran sampel disetel lebih tinggi dari kardinalitas database, itu akan tetap menggunakan RANDOMKEYS daripada SCAN.
  • Tidak ada bundel atau gambar Docker yang tersedia. Anda harus menginstal dependensi secara manual (meskipun sisi baiknya, hanya ada 2 dependensi).
  • Melaporkan ukuran data, yang tidak sama persis dengan ruang yang digunakan pada RAM karena overhead penyimpanan struktur data.
  • Tidak berfungsi jika instans Redis Anda memerlukan autentikasi. Anda perlu memodifikasi skrip untuk mengambil kata sandi; dalam bentuk paling sederhana Anda dapat mencari:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    dan ubah ke:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :kata sandi => “tambahkan-kata sandi-Anda-sini”)
Lihat 6 Alat Analisis Memori #Redis Gratis TeratasKlik Untuk Tweet

3) Alat RDB

RDB Tools adalah rangkaian alat yang sangat berguna untuk administrator Redis yang serius. Ada alat untuk hampir setiap kasus penggunaan yang dapat kami pikirkan, tetapi dalam posting ini, kami hanya akan berkonsentrasi pada alat analisis memori.
Meskipun tidak sekomprehensif RMA atau Redis Sampler, Alat RDB memberikan 3 informasi penting:

1) Semua kunci yang nilainya (berseri) berukuran lebih besar dari B byte [B ditentukan oleh pengguna].

2) Tombol N terbesar [N ditentukan oleh pengguna].

3) Ukuran kunci tertentu:ini dibaca langsung dari database.

Suite ini memiliki banyak kontributor aktif di GitHub dan cukup sering diperbarui. RDB Tools juga didokumentasikan dengan baik di internet. Pengelola sripathikrishnan terkenal di komunitas Redis karena banyak alat yang telah dia sediakan selama bertahun-tahun.

Penginstalan dan Penggunaan Alat RDB:

RDB Tools membutuhkan Python dan PIP untuk diinstal pada sistem (keduanya tersedia untuk semua OS utama). Setelah terinstal, Anda dapat menjalankan satu perintah untuk menginstal alat RDB – `pip install rdbtools python-lz`

Penggunaan cukup mudah:

  • Untuk mendapatkan 200 kunci terbesar:rdb -c memory /var/redis/6379/dump.rdb –200 terbesar -f memory.csv
  • Untuk mendapatkan semua kunci yang lebih besar dari 128 byte:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Untuk mendapatkan ukuran kunci:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Kelebihan Alat RDB:

  • Mengeluarkan file CSV, yang dapat digunakan dengan alat FOSS lain untuk membuat visualisasi data dengan mudah, dan juga dapat diimpor ke RDBMS-es untuk menjalankan analitik.
  • Didokumentasikan dengan sangat baik.
  • Mendukung opsi penyesuaian dan pemfilteran, sehingga Anda bisa mendapatkan laporan yang lebih berguna.

Kekurangan Alat RDB:

  • Analisis mereka tidak berfungsi pada data langsung; Anda harus mengambil dump RDB. Akibatnya, penggunaan memori yang dilaporkan adalah memori serial, yang tidak persis sama dengan memori yang digunakan pada RAM.
  • Tidak memiliki dukungan bawaan untuk pengelompokan, sehingga tidak dapat menemukan ruang nama terbesar.

4) Redis-Audit

Redis-Audit adalah alat probabilistik yang berguna untuk mendapatkan gambaran umum singkat tentang penggunaan memori Anda. Ini mengeluarkan informasi berguna tentang grup kunci, seperti konsumsi memori keseluruhan, TTL maksimum dalam grup, rata-rata waktu akses terakhir, persentase kunci dalam grup yang kedaluwarsa, dll. Ini adalah alat yang sempurna jika Anda perlu menemukan memori paling banyak- memonopoli grup kunci dalam aplikasi Anda.

Penginstalan dan Penggunaan Redis-Audit:

Anda harus sudah menginstal Ruby dan Bundle. Setelah terinstal, Anda dapat mengkloning repositori Redis-Audit ke folder atau mengunduh zip dan mengekstraknya ke folder. Dari folder tersebut, jalankan `bundle install` untuk menyelesaikan instalasi.

Penggunaan cukup mudah:dari baris perintah, jalankan ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`

Profes Redis-Audit:

  • Memungkinkan Anda untuk menentukan ekspresi reguler Anda sendiri untuk pengelompokan keyspace/prefix.
  • Berfungsi pada semua versi Redis.
  • Jika ukuran sampel lebih besar dari jumlah kunci yang sebenarnya, ia akan menelusuri semua kunci. Di sisi lain, operasi ini menggunakan tombol *, daripada memindai – mungkin memblokir operasi lain.

Kekurangan Redis-Audit:

  • Menggunakan perintah DEBUG OBYEK (tidak tersedia di ElastiCache); sebagai hasilnya, ia melaporkan ukuran serial – yang berbeda dari ukuran sebenarnya yang digunakan pada RAM.
  • Output tidak mudah diurai dengan cepat, karena tidak ditabulasi.

5) Toolkit Redis

Redis Toolkit adalah solusi pemantauan sederhana yang dapat digunakan untuk menganalisis dua metrik utama:hit rate dan konsumsi memori. Proyek ini diperbarui secara berkala untuk perbaikan bug tetapi tidak memiliki dukungan komunitas yang dinikmati oleh beberapa alat yang lebih terkenal.

Penginstalan dan Penggunaan Redis Toolkit:

Anda harus menginstal Docker di sistem Anda. Kemudian, kloning repositori GitHub (atau unduh sebagai zip dan unzip ke folder). Dari folder tersebut, penginstalan semudah menjalankan `./redis-toolkit install`.

Penggunaan murni melalui baris perintah, melalui serangkaian perintah sederhana.

  • Untuk mulai memantau hit-rate:./redis-toolkit monitor
  • Untuk melaporkan hit-rate:./redis-toolkit report -name NAME -type hitrate
  • Untuk menghentikan pemantauan hit-rate:./redis-toolkit stop
  • Untuk membuat file dump di sistem lokal:./redis-toolkit dump
  • Untuk melaporkan penggunaan memori:./redis-toolkit report -type memory -name NAME

Kelebihan Alat Redis:

  • Antarmuka yang mudah dipahami yang memberikan informasi tepat yang Anda butuhkan.
  • Dapat mengelompokkan awalan ke tingkat apa pun yang berguna bagi Anda (jadi jika Anda memilih a:b:1 dan a:c:1, mereka dihitung sebagai a:* atau terpisah) .
  • Berfungsi pada semua versi Redis; tidak memerlukan akses ke perintah istimewa seperti DEBUG OBYEK.
  • Terdokumentasi dengan baik.

Kekurangan Perangkat Redis:

  • Analisis memori tidak aktif; karena ini bekerja pada dump serial, penggunaan memori yang dilaporkan tidak akan sama dengan konsumsi RAM yang sebenarnya.
  • Sebuah dump harus dibuat di komputer tempat Redis Toolkit dijalankan. Jika Anda memiliki instance Redis jarak jauh, ini bisa memakan waktu cukup lama.
  • Memantau hit rate menggunakan perintah MONITOR untuk menangkap semua perintah yang telah berjalan di server. Hal ini dapat menurunkan kinerja dan kemungkinan risiko keamanan dalam produksi.
  • Tingkat klik dihitung sebagai |GET| / (|GET| + |SET|). Jadi, jika suatu nilai sering berubah, hit rate-nya akan lebih rendah, meskipun tidak pernah ada cache miss yang sebenarnya.

6) Panen

Ini adalah alat pengambilan sampel probabilistik, yang dapat digunakan untuk mengidentifikasi 10 ruang nama/awalan terbesar, dalam hal jumlah kunci. Ini adalah salah satu alat terbaru dan belum melihat banyak daya tarik di GitHub. Namun, jika Anda seorang pemula Redis yang ingin mengidentifikasi jenis data aplikasi apa yang menyumbat instans Anda, Anda tidak bisa mendapatkan yang lebih sederhana daripada Harvest.

Pemasangan dan Penggunaan Panen:

Ini dapat diunduh sebagai gambar Docker. Setelah gambar siap, Anda dapat menjalankan alat menggunakan perintah 'docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL' dari CLI.

Proses Panen:

  • Berfungsi pada data langsung.
  • Menggunakan perintah 'penggunaan memori' untuk mendapatkan informasi ukuran; maka:
    • Memberikan informasi ukuran yang akurat (bukan ukuran serial).
    • Tidak memerlukan akses ke perintah DEBUG OBYEK.
  • Ruang nama Anda tidak perlu digambarkan dengan :(titik dua). Harvest mengidentifikasi awalan umum, bukan bergantung pada pengenalan namespace berbasis regex.

Kontra Panen:

  • Ini adalah kuda poni satu trik – sulit untuk mengadaptasinya untuk kasus penggunaan lainnya.
  • Alat ini hanya berfungsi dengan Redis v4.0 dan yang lebih baru.
  • Dokumentasi minimal.

Batasan Alat Gratis

Meskipun kami menemukan alat ini sangat berguna untuk men-debug masalah memori instance Redis kami, Anda harus menyadari keterbatasan alat gratis ini.

Alat berbayar hampir selalu memiliki semacam visualisasi data, yang tidak tersedia langsung dengan alat apa pun yang kami audit. Yang terbaik yang akan Anda dapatkan adalah keluaran CSV yang dapat Anda gunakan untuk memvisualisasikan alat FOSS lainnya, dan banyak alat bahkan tidak memiliki opsi itu. Itu membuat kurva belajar yang curam, terutama untuk pengguna Redis pemula. Jika Anda cenderung sering melakukan analisis memori, mungkin ada baiknya melihat alat berbayar yang memberikan visualisasi yang baik.

Keterbatasan lain adalah kemampuan untuk menyimpan informasi historis. Sesuai dengan filosofi umum *nix untuk membuat alat kecil yang hanya melakukan satu hal, tetapi melakukannya dengan baik, alat tersebut jarang masuk ke ruang pemantauan. Bahkan tidak ada grafik konsumsi memori dari waktu ke waktu, dan banyak yang bahkan tidak dapat menganalisis data langsung.

Intinya

Satu alat mungkin tidak akan cukup untuk semua kebutuhan Anda, tetapi itu adalah senjata yang cukup hebat untuk dimiliki di gudang senjata Anda, dipasangkan dengan kemampuan pemantauan disediakan oleh solusi DBaaS seperti hosting ScaleGrid untuk Redis™*! Untuk mempelajari lebih lanjut tentang alat hebat yang tersedia dengan layanan hosting kami yang terkelola sepenuhnya untuk Redis™, lihat halaman fitur ScaleGrid untuk Redis™ menurut Paket.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara menggunakan Redis dari Node.js

  2. Redis dengan Resque dan Rails:Perintah ERR tidak diizinkan saat menggunakan memori> 'maxmemory'

  3. shutdown redis-server dari baris perintah

  4. Cara membuat RedisCacheManager di spring-data 2.0.x

  5. Menjalankan supervisord dari Host, seledri dari virtualenv (aplikasi Django)