Khi nói đến việc phân tích việc sử dụng bộ nhớ của một phiên bản Redis, có rất nhiều công cụ miễn phí và mã nguồn mở trên thị trường, cùng với vô số sản phẩm trả phí. Một số công cụ phổ biến nhất là Jacks (trong tất cả các ngành nghề nổi tiếng), nhưng nếu bạn đang tìm kiếm phân tích sâu hơn về các vấn đề trí nhớ của mình, thì tốt hơn hết bạn nên sử dụng một trong những công cụ được nhắm mục tiêu hơn và ít được biết đến hơn.
Trong bài đăng này, chúng tôi đã biên soạn danh sách 6 công cụ miễn phí hàng đầu mà chúng tôi thấy hữu ích nhất trong việc phân tích mức sử dụng bộ nhớ của các phiên bản Redis của chúng tôi:
- Trình phân tích bộ nhớ Redis (RMA)
- Redis Sampler
- Công cụ RDB
- Redis-Audit
- Bộ công cụ Redis
- Thu hoạch
1) Trình phân tích bộ nhớ Redis
Redis Memory Analyzer (RMA) là một trong những trình phân tích bộ nhớ FOSS toàn diện nhất hiện có cho Redis. Nó hỗ trợ ba cấp độ chi tiết khác nhau:
- Toàn cầu - Tổng quan về thông tin sử dụng bộ nhớ.
- Máy quét - Thông tin sử dụng bộ nhớ cấp tiền tố / không gian phím cấp cao nhất - nói cách khác, tiền tố chung ngắn nhất được sử dụng.
- RAM - Tiền tố / không gian phím cấp thấp nhất - nói cách khác, tiền tố chung dài nhất được sử dụng.
Mỗi chế độ có cách sử dụng riêng- bạn có thể biết thêm chi tiết trong RMA ReadMe.
RMA - Chế độ toàn cầu
Ở chế độ toàn cục, RMA cung cấp một số thống kê cấp cao, như số lượng khóa, bộ nhớ hệ thống, kích thước tập hợp thường trú, kích thước không gian phím, v.v. Một tính năng độc đáo là “ keyspace overhead ”là bộ nhớ được hệ thống Redis sử dụng để lưu trữ thông tin liên quan đến keyspace, như con trỏ cho cấu trúc dữ liệu danh sách.
RMA - Chế độ Máy quét
Ở chế độ máy quét, chúng tôi sẽ có cái nhìn tổng quan về không gian phím của mình. Nó cung cấp các không gian tên cấp cao (vì vậy a:b:1 và a:c:1 được ghép nối lại với nhau như một:*), cùng với các loại mục của nó và phần trăm bộ nhớ được sử dụng bởi không gian tên đó. Sẽ rất hữu ích khi bắt đầu với thông tin này và sau đó sử dụng hành vi ‘RAM’ cùng với mẫu không gian tên để thực hiện phân tích chi tiết.
RMA - Chế độ RAM
Trong chế độ RAM, chúng tôi nhận được mức tiêu thụ bộ nhớ ở cấp độ phím không gian, như được cung cấp bởi hầu hết các bộ phân tích phần mềm nguồn mở khác. Vì vậy, ở đây, a:b:1 và a:c:1 được lấy riêng biệt dưới dạng a:b:* và a:c:* và chúng tôi nhận được thông tin chi tiết về bộ nhớ được sử dụng, kích thước dữ liệu thực tế, tổng chi phí, mã hóa, TTL tối thiểu và tối đa , v.v. Điều này giúp xác định các bộ kích hoạt bộ nhớ lớn nhất trong hệ thống của chúng tôi.
Thật không may, công cụ này không phải lúc nào cũng được cập nhật (lần cam kết cuối cùng trên GitHub là hơn một năm trước). Mặc dù vậy, đây là một trong những điều tốt nhất mà chúng tôi tìm thấy để phân tích chi tiết.
Cài đặt và sử dụng RMA:
RMA yêu cầu phải cài đặt Python và PIP trên hệ thống (cả hai đều có sẵn cho tất cả các hệ điều hành chính). Sau khi chúng được cài đặt, bạn có thể thực hiện một lệnh duy nhất để cài đặt các công cụ RDB - `pip install rma`
Cách sử dụng từ dòng lệnh khá đơn giản. Cú pháp là `rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l number-of-key-to-scan] [-b HÀNH VI] [-t bằng dấu phẩy-phân-tách-danh-sách-dữ-liệu-loại-để-quét] `
RMA Ưu điểm:
- Hoạt động trong thời gian thực.
- Sử dụng lệnh quét để xem qua cơ sở dữ liệu, do đó, tác động đến hiệu suất bị hạn chế và phân tích rất chính xác.
- Được tài liệu đầy đủ - thật dễ dàng tìm thấy các ví dụ sử dụng.
- Hỗ trợ các tùy chọn lọc và tùy chỉnh mạnh mẽ, bao gồm chỉ phân tích các loại dữ liệu cụ thể hoặc chỉ xem xét các khóa phù hợp với một mẫu cụ thể).
- Có thể cung cấp thông tin chi tiết ở các cấp độ khác nhau - không gian tên, khóa hoặc giá trị chung.
- Duy nhất trong số tất cả các công cụ chúng tôi đã kiểm tra ở chỗ nó hiển thị chi phí cấu trúc dữ liệu (nghĩa là lượng bộ nhớ được sử dụng để lưu trữ thông tin Redis nội bộ như con trỏ cho kiểu dữ liệu danh sách ).
Nhược điểm của RMA:
- Không hỗ trợ lấy mẫu theo xác suất. Việc quét tuyến tính cơ sở dữ liệu có thể rất chậm đối với cơ sở dữ liệu lớn; có tùy chọn dừng quét sau khi một số phím nhất định được trả lại để cải thiện hiệu suất.
- Có rất nhiều chi tiết trong đầu ra; mặc dù hữu ích cho các chuyên gia, nhưng có thể chỉ gây nhầm lẫn cho những người mới làm quen.
2) Redis Sampler
Redis Sampler là một công cụ rất mạnh có thể cung cấp thông tin chi tiết sâu sắc về việc sử dụng bộ nhớ của một phiên bản Redis. Nó được duy trì bởi antirez, nhà phát triển đằng sau Redis và kiến thức sâu sắc về Redis thể hiện qua công cụ này. Công cụ này không được cập nhật thường xuyên - nhưng không có nhiều vấn đề được báo cáo.
Redis Sampler thực hiện quét theo xác suất cơ sở dữ liệu và báo cáo thông tin sau:
- Tỷ lệ phân phối khóa giữa các loại dữ liệu khác nhau - dựa trên số lượng khóa, thay vì kích thước của đối tượng.
- Các khóa lớn nhất của loại chuỗi, dựa trên strlen và phần trăm bộ nhớ mà chúng sử dụng.
- Đối với tất cả các kiểu dữ liệu khác, các khóa lớn nhất được tính toán và hiển thị dưới dạng hai danh sách riêng biệt:một dựa trên kích thước của đối tượng và một dựa trên số lượng mục trong đối tượng.
- Đối với mọi kiểu dữ liệu, nó cũng hiển thị “Phân phối lũy thừa 2”. Điều này thực sự hữu ích trong việc hiểu sự phân bố kích thước trong một kiểu dữ liệu. Về cơ bản, kết quả cung cấp thông tin chi tiết về tỷ lệ phần trăm khóa của một loại nhất định có kích thước trong phạm vi> 2 ^ x và <=2 ^ x + 1.
Cài đặt và sử dụng Redis Sampler:
Đây là một script Ruby duy nhất. Nó yêu cầu Ruby phải được cài đặt sẵn. Bạn cũng cần cài đặt đá quý `rubygems` và` redis`. Cách sử dụng khá đơn giản - từ dòng lệnh, hãy thực thi `./redis-sampler.rb`
Ưu điểm của Redis Sampler:
- Sử dụng rất đơn giản - không có tùy chọn nào để điều tra và hiểu rõ.
- Kết quả đầu ra dễ hiểu, ngay cả đối với người mới, nhưng có đủ thông tin để các chuyên gia phân tích rất chi tiết về phiên bản Redis. Các phần được phân chia ranh giới rõ ràng và dễ lọc ra.
- Hoạt động trên tất cả các phiên bản Redis.
- Không sử dụng bất kỳ lệnh đặc quyền nào như DEBUG OBJECT, vì vậy nó có thể được sử dụng trên mọi hệ thống, kể cả Amazon’s ElastiCache.
- Nó sử dụng các lệnh về độ dài dành riêng cho loại dữ liệu để xác định kích thước dữ liệu, vì vậy việc sử dụng được báo cáo không bị ảnh hưởng bởi quá trình tuần tự hóa.
- Hoạt động trên dữ liệu trực tiếp. Mặc dù đề xuất chạy trên giao diện lặp lại nhưng nó hỗ trợ lấy mẫu các hệ thống từ xa.
Nhược điểm của Redis Sampler:
- Nếu kích thước mẫu được đặt cao hơn dung lượng cơ sở dữ liệu, nó sẽ vẫn sử dụng RANDOMKEYS thay vì SCAN.
- Không có sẵn gói hoặc hình ảnh Docker. Bạn phải cài đặt thủ công các phần phụ thuộc (mặc dù xét về khía cạnh sáng sủa, chỉ có 2 phần phụ thuộc).
- Báo cáo kích thước dữ liệu không khớp chính xác với dung lượng bị chiếm dụng trên RAM do chi phí lưu trữ cấu trúc dữ liệu.
- Không hoạt động hiệu quả nếu phiên bản Redis của bạn yêu cầu xác thực. Bạn cần sửa đổi tập lệnh để lấy mật khẩu; ở dạng đơn giản nhất, bạn có thể tìm kiếm:
redis =Redis.new (:host => ARGV [0],:port => ARGV [1] .to_i,:db => ARGV [2] .to_i)
và thay đổi nó thành:
redis =Redis.new (:host => ARGV [0],:port => ARGV [1] .to_i,:db => ARGV [2] .to_i,:mật khẩu => “add-your-password-here”)
3) Công cụ RDB
Công cụ RDB là bộ công cụ rất hữu ích cho bất kỳ quản trị viên Redis nghiêm túc nào. Có một công cụ cho hầu hết mọi trường hợp sử dụng mà chúng ta có thể nghĩ đến, nhưng trong bài đăng này, chúng ta sẽ chỉ tập trung vào công cụ phân tích bộ nhớ.
Mặc dù không nơi nào gần như toàn diện như RMA hoặc Redis Sampler, RDB Tools cho 3 phần thông tin quan trọng:
1) Tất cả các khóa có giá trị (được tuần tự hóa) có kích thước lớn hơn B byte [B được chỉ định bởi người dùng].
2) N phím lớn nhất [N do người dùng chỉ định].
3) Kích thước của một khóa cụ thể:khóa này được đọc trực tiếp từ cơ sở dữ liệu.
Bộ phần mềm này có nhiều cộng tác viên tích cực trên GitHub và được cập nhật khá thường xuyên. Công cụ RDB cũng được ghi lại đầy đủ trên internet. Người bảo trì sripathikrishnan nổi tiếng trong cộng đồng Redis với nhiều công cụ mà anh ấy đã cung cấp trong nhiều năm.
Cài đặt và sử dụng công cụ RDB:
Công cụ RDB yêu cầu cài đặt Python và PIP trên hệ thống (cả hai đều có sẵn cho tất cả các hệ điều hành chính). Sau khi chúng được cài đặt, bạn có thể thực hiện một lệnh duy nhất để cài đặt các công cụ RDB - `pip install rdbtools python-lz`
Cách sử dụng khá đơn giản:
- Để nhận 200 khóa lớn nhất:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
- Để nhận tất cả các khóa lớn hơn 128 byte:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
- Để nhận kích thước của một khóa:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1
Ưu điểm của Công cụ RDB:
- Xuất ra tệp CSV, tệp này có thể được sử dụng với các công cụ phần mềm nguồn mở khác để dễ dàng tạo trực quan hóa dữ liệu và cũng có thể được nhập vào RDBMS-es để chạy phân tích.
- Được ghi chép rất đầy đủ.
- Hỗ trợ các tùy chọn tùy chỉnh và lọc để bạn có thể nhận được nhiều báo cáo hữu ích hơn.
Công cụ RDB Nhược điểm:
- Phân tích của họ không hoạt động trên dữ liệu trực tiếp; bạn phải thực hiện một kết xuất RDB. Do đó, việc sử dụng bộ nhớ được báo cáo là bộ nhớ tuần tự, không hoàn toàn giống với bộ nhớ bị chiếm dụng trên RAM.
- Nó không có bất kỳ hỗ trợ tích hợp nào cho việc nhóm, vì vậy nó không thể tìm thấy các vùng tên lớn nhất.
4) Kiểm tra lại
Redis-Audit là một công cụ xác suất hữu ích để có được cái nhìn tổng quan nhanh chóng về việc sử dụng bộ nhớ của bạn. Nó xuất ra thông tin hữu ích về các nhóm khóa, như mức tiêu thụ bộ nhớ tổng thể, TTL tối đa trong nhóm, thời gian truy cập cuối cùng trung bình, tỷ lệ khóa trong nhóm hết hạn, v.v. Đây là công cụ hoàn hảo nếu bạn cần tìm bộ nhớ nhiều nhất- nhóm khóa trong ứng dụng của bạn.
Cài đặt và sử dụng Redis-Audit:
Bạn phải cài đặt Ruby và Bundle. Sau khi cài đặt, bạn có thể sao chép kho lưu trữ Redis-Audit vào một thư mục hoặc tải xuống tệp zip và giải nén nó vào một thư mục. Từ thư mục đó, hãy chạy `gói cài đặt` để hoàn tất quá trình cài đặt.
Cách sử dụng khá đơn giản:từ dòng lệnh, thực thi `redis-Audit.rb hostname [port] [password] [dbnum] [sample_size]`
Redis-Audit Pro:
- Cho phép bạn xác định regex của riêng mình để tạo keyspace / prefix group.
- Hoạt động trên tất cả các phiên bản Redis.
- Nếu kích thước mẫu lớn hơn số lượng khóa thực tế, nó sẽ duyệt qua tất cả các khóa. Mặt khác, thao tác này sử dụng phím * chứ không phải quét - có thể chặn các thao tác khác.
Nhược điểm của Redis-Audit:
- Sử dụng lệnh DEBUG OBJECT (không có trong ElastiCache); do đó, nó báo cáo về kích thước được tuần tự hóa - khác với kích thước thực tế chiếm trên RAM.
- Kết quả đầu ra không dễ dàng để phân tích cú pháp nhanh chóng, vì nó không được lập bảng.
5) Bộ công cụ Redis
Bộ công cụ Redis là một giải pháp giám sát đơn giản có thể được sử dụng để phân tích hai số liệu chính:tỷ lệ truy cập và mức tiêu thụ bộ nhớ. Dự án được cập nhật định kỳ để sửa lỗi nhưng không được cộng đồng hỗ trợ một số công cụ nổi tiếng hơn.
Cài đặt và sử dụng Bộ công cụ Redis:
Bạn phải cài đặt Docker trên hệ thống của mình. Sau đó, sao chép kho lưu trữ GitHub (hoặc tải xuống dưới dạng zip và giải nén vào một thư mục). Từ thư mục đó, việc cài đặt cũng đơn giản như thực thi `./redis-toolkit install`.
Cách sử dụng hoàn toàn là thông qua dòng lệnh, thông qua một loạt lệnh đơn giản.
- Để bắt đầu theo dõi tỷ lệ truy cập:./redis-toolkit monitor
- Để báo cáo tỷ lệ truy cập:./redis-toolkit báo cáo -tên TÊN-loại tỷ lệ truy cập
- Để ngừng theo dõi tỷ lệ truy cập:./redis-toolkit hãy dừng lại
- Để tạo tệp kết xuất trên hệ thống cục bộ:./redis-toolkit dump
- Để báo cáo việc sử dụng bộ nhớ:./redis-toolkit report -type memory -name NAME
Ưu điểm của Bộ công cụ Redis:
- Giao diện dễ hiểu cung cấp cho bạn thông tin chính xác mà bạn yêu cầu.
- Có thể nhóm các tiền tố thành bất kỳ cấp nào hữu ích cho bạn (vì vậy nếu bạn chọn a:b:1 và a:c:1, chúng được tính là a:* hoặc riêng biệt) .
- Hoạt động trên tất cả các phiên bản Redis; không yêu cầu quyền truy cập vào các lệnh đặc quyền như DEBUG OBJECT.
- Được tài liệu đầy đủ.
Nhược điểm của Bộ công cụ Redis:
- Phân tích bộ nhớ không hoạt động; vì nó hoạt động trên kết xuất tuần tự, mức sử dụng bộ nhớ được báo cáo sẽ không bằng mức tiêu thụ RAM thực tế.
- Một kết xuất phải được tạo trên máy tính đang chạy Bộ công cụ Redis. Nếu bạn có phiên bản Redis từ xa, quá trình này có thể mất một chút thời gian.
- Theo dõi tỷ lệ truy cập sử dụng lệnh MONITOR để nắm bắt tất cả các lệnh đã chạy trên máy chủ. Điều này có thể làm giảm hiệu suất và là nguy cơ bảo mật có thể xảy ra trong quá trình sản xuất.
- Tỷ lệ truy cập được tính là | GET | / (| GET | + | SET |). Vì vậy, nếu một giá trị thay đổi thường xuyên, tỷ lệ truy cập của nó sẽ thấp hơn, ngay cả khi không bao giờ có lần bỏ lỡ bộ nhớ cache thực sự.
6) Thu hoạch
Đây là công cụ lấy mẫu theo xác suất, có thể được sử dụng để xác định 10 không gian tên / tiền tố lớn nhất, xét về số lượng khóa. Đây là một trong những công cụ mới nhất và chưa có nhiều sức hút trên GitHub. Tuy nhiên, nếu bạn là người mới làm quen với Redis đang tìm cách xác định loại dữ liệu ứng dụng nào đang làm tắc nghẽn phiên bản của bạn, bạn không thể nhận được bất cứ điều gì đơn giản hơn Harvest.
Thu hoạch Cài đặt và Sử dụng:
Đây có thể tải xuống dưới dạng hình ảnh Docker. Khi hình ảnh đã sẵn sàng, bạn có thể chạy công cụ bằng lệnh ‘docker run –link redis:redis -it –rm 31z4 /vest redis:// redis-URL’ từ CLI.
Thu hoạch Ưu điểm:
- Hoạt động trên dữ liệu trực tiếp.
- Sử dụng lệnh ‘memory using’ để lấy thông tin về kích thước; do đó:
- Cung cấp thông tin về kích thước chính xác (thay vì kích thước được sắp xếp theo thứ tự).
- Không yêu cầu quyền truy cập vào lệnh GỬI MỤC TIÊU.
- Không gian tên của bạn không cần phải được phân định bằng:(dấu hai chấm). Harvest xác định các tiền tố phổ biến, thay vì phụ thuộc vào nhận dạng không gian tên dựa trên regex.
Nhược điểm thu hoạch:
- Đó là một chú ngựa có một mẹo nhỏ - rất khó để điều chỉnh nó cho bất kỳ trường hợp sử dụng nào khác.
- Công cụ này chỉ hoạt động với Redis v4.0 trở lên.
- Tài liệu tối thiểu.
Hạn chế của Công cụ Miễn phí
Mặc dù chúng tôi nhận thấy những công cụ này rất hữu ích để gỡ lỗi các vấn đề về bộ nhớ của phiên bản Redis, nhưng bạn nên biết những hạn chế của những công cụ miễn phí này.
Các công cụ trả phí hầu như luôn có một số loại trực quan hóa dữ liệu, điều này không khả dụng với bất kỳ công cụ nào mà chúng tôi đã kiểm tra. Điều tốt nhất bạn sẽ nhận được là đầu ra CSV mà bạn có thể sử dụng các công cụ FOSS khác để trực quan hóa và nhiều công cụ thậm chí không có tùy chọn đó. Điều đó tạo ra một đường cong học tập dốc, đặc biệt là đối với những người dùng Redis mới làm quen. Nếu bạn có khả năng thường xuyên phân tích bộ nhớ, bạn nên xem xét các công cụ trả phí cung cấp hình ảnh tốt.
Một hạn chế khác là khả năng lưu trữ thông tin lịch sử. Để phù hợp với triết lý * nix chung về việc tạo ra các công cụ nhỏ chỉ làm một việc nhưng làm tốt điều đó, các công cụ này hiếm khi dấn thân vào không gian giám sát. Thậm chí không có biểu đồ tiêu thụ bộ nhớ theo thời gian và nhiều người thậm chí không thể phân tích dữ liệu trực tiếp.
Điểm mấu chốt
Một công cụ duy nhất có thể sẽ không đủ cho tất cả các nhu cầu của bạn, nhưng chúng là vũ khí khá tuyệt vời để có trong kho vũ khí của bạn, kết hợp với khả năng giám sát được cung cấp bởi các giải pháp DBaaS như lưu trữ của ScaleGrid cho Redis ™ *! Để tìm hiểu thêm về các công cụ tuyệt vời có sẵn với các dịch vụ lưu trữ được quản lý đầy đủ của chúng tôi dành cho Redis ™, hãy xem các tính năng ScaleGrid của chúng tôi dành cho trang Redis ™ by Plan.