Otkrijte kako funkcioniše vaš Redis, kada može doći do problema, protok, brzinu prenosa podataka i mnoge druge informacije uz pomoć sledećih izvanrednih alata.
Redis (Remote Dictionary Service) je u poslednjih nekoliko godina stekao veliku popularnost i široku primenu.
Njegova primena nije ograničena samo na poslovne aplikacije, već se koristi i u malim i srednjim preduzećima. Redis se čak može koristiti i na WordPress platformi za keširanje, što značajno poboljšava performanse. Ako ste zainteresovani da naučite Redis od samog početka, preporučujemo ovaj online kurs.
Kao programer ili administrator sistema u okviru poslovne aplikacije, trebalo bi da budete upućeni u proces benčmarking-a kako biste precizno utvrdili performanse i kapacitet svoje aplikacije. Benčmarking Redis-a se donekle razlikuje od onog za veb servere. Dobra vest je da postoji mnogo besplatnih alata koji vam stoje na raspolaganju, tako da možete izabrati onaj koji najviše odgovara vašim potrebama.
Da li ste spremni za istraživanje?
Redis-benchmark
Iskoristite prednosti ugrađenog Redis alata za benčmarking, koji se naziva `redis-benchmark`. On je sastavni deo Redis instalacije i možete ga pokrenuti jednostavnim unosom komande `redis-benchmark` na UNIX sistemima. Dostupan je i za Windows, gde se pokreće kao izvršna datoteka `redis-benchmark.exe`.
Pogledajmo nekoliko primera.
Slanje milion zahteva ka adresi 192.168.0.100:
[email protected]:~# redis-benchmark -h 192.168.0.100 -p 6379 -n 1000000 ====== PING_INLINE ====== 1000000 requests completed in 30.62 seconds 50 parallel clients 3 bytes payload keep alive: 1 61.85% <= 1 milliseconds 99.55% <= 2 milliseconds 99.93% <= 3 milliseconds 99.96% <= 4 milliseconds 99.98% <= 5 milliseconds 99.99% <= 6 milliseconds 99.99% <= 7 milliseconds 100.00% <= 8 milliseconds 100.00% <= 9 milliseconds 100.00% <= 9 milliseconds 32653.06 requests per second
Milion zahteva je obrađeno za 30,62 sekunde. Obratite pažnju na poslednji red, gde se vidi da je obrađeno ~32653 zahteva po sekundi.
Ako pažljivije pogledate, primetićete da je veličina korisnog opterećenja 3 bajta. Ovo su podrazumevane vrednosti, a za prilagođavanje možete koristiti parametar `-d`. Sledeći test se odnosi na 100.000 zahteva sa korisnim opterećenjem od 1 MB.
[email protected]:~# redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -d 1000000 ====== PING_INLINE ====== 100000 requests completed in 2.80 seconds 50 parallel clients 1000000 bytes payload keep alive: 1 73.19% <= 1 milliseconds 99.95% <= 2 milliseconds 100.00% <= 2 milliseconds 35676.06 requests per second
Da li ste primetili paralelne klijente? Podrazumevana vrednost je 50, a za podešavanje možete koristiti parametar `-c`. Primer ispod prikazuje test sa 200 klijenata.
[email protected]:~# redis-benchmark -h 127.0.0.1 -p 6379 -n 100000 -d 1000000 -c 200 ====== PING_INLINE ====== 100000 requests completed in 3.77 seconds 200 parallel clients 1000000 bytes payload keep alive: 1 0.00% <= 1 milliseconds 2.99% <= 2 milliseconds 18.95% <= 3 milliseconds 45.81% <= 4 milliseconds 69.65% <= 5 milliseconds 86.58% <= 6 milliseconds 95.79% <= 7 milliseconds 98.88% <= 8 milliseconds 99.78% <= 9 milliseconds 99.96% <= 10 milliseconds 100.00% <= 10 milliseconds 26532.24 requests per second
Kao što vidite, sa 200 klijenata je trebalo više vremena, a i obrada je bila sporija. Međutim, to je i očekivano i ovaj test pomaže u utvrđivanju realnih performansi aplikacije.
Niste zadovoljni alatom `redis-benchmark`? Bez brige, ima još alata koje možete koristiti.
Redis-cli
Da li vas zanima samo informacija o latenciji?
Naravno, možete koristiti `redis-cli` koji dolazi uz Redis server. Možete ga pokrenuti sa parametrom `–latency`.
[email protected]:~# redis-cli --latency min: 0, max: 1, avg: 0.16 (1056 samples
Podrazumevano, uzorak latencije se uzima svake sekunde, ali to možete promeniti pomoću opcije `-i` ukoliko je potrebno.
Memtier Benchmark
Memtier benchmark, razvijen od strane Redis Labs-a, podržava i Redis i Memcached. To je napredan alat za benčmarking sa raznim opcijama za testiranje, kao što su:
- Testiranje Redis-a zaštićenog lozinkom
- Pokretanje klijenta u klaster modu
- Podešavanje broja klijenata, zahteva, niti, veličine podataka
- Podešavanje odnosa SET i GET komandi
i još mnogo toga…
Evo kratkog izveštaja o testiranju:
[email protected]:~# memtier_benchmark [RUN #1] Preparing benchmark client... [RUN #1] Launching threads now... [RUN #1 100%, 133 secs] 3 threads: 1993223 ops, 15083 (avg: 14877) ops/sec, 639.97KB/sec (avg: 631.04KB/sec), 13.30 (avg: 13.44) msec latenc[RUN #1 100%, 134 secs] 0 threads: 2000000 ops, 15083 (avg: 14911) ops/sec, 639.97KB/sec (avg: 632.52KB/sec), 13.30 (avg: 13.41) msec latency 4 Threads 50 Connections per thread 10000 Requests per client ALL STATS ========================================================================= Type Ops/sec Hits/sec Misses/sec Latency KB/sec ------------------------------------------------------------------------- Sets 1354.30 --- --- 13.40200 104.30 Gets 13528.13 0.00 13528.13 13.41000 526.98 Waits 0.00 --- --- 0.00000 --- Totals 14882.43 0.00 13528.13 13.40900 631.28 Request Latency Distribution Type <= msec Percent ------------------------------------------------------------------------ SET 0.055 0.00 SET 0.063 0.00 SET 0.110 0.00 SET 0.140 0.00 SET 0.160 0.00 SET 0.170 0.00 SET 0.180 0.00 SET 0.210 0.01 SET 0.230 0.01 SET 0.280 0.01 SET 0.300 0.01 SET 0.360 0.01 SET 0.440 0.01 SET 0.460 0.01 SET 0.480 0.01 SET 0.510 0.01 SET 0.570 0.01 SET 0.590 0.01 SET 0.610 0.01 SET 0.630 0.01 SET 0.640 0.02 SET 0.670 0.02 SET 0.680 0.02 SET 0.710 0.02 SET 0.730 0.02 SET 0.740 0.02 SET 0.750 0.02 SET 0.760 0.02 SET 0.770 0.02 SET 0.780 0.02 SET 0.790 0.02 SET 0.820 0.02 SET 0.840 0.02 SET 0.850 0.03 SET 0.870 0.03 SET 0.880 0.03 SET 0.900 0.03 SET 0.930 0.03 SET 0.940 0.03 SET 0.950 0.03 SET 0.960 0.03 SET 0.970 0.03 SET 1.000 0.03 SET 1.100 0.04 SET 1.200 0.05 SET 1.300 0.06 SET 1.400 0.07 SET 1.500 0.08 SET 1.600 0.08 SET 1.700 0.09 SET 1.800 0.10 SET 1.900 0.10 SET 2.000 0.11 SET 2.100 0.12 SET 2.200 0.12 SET 2.300 0.13 SET 2.400 0.14 SET 2.500 0.16 SET 2.600 0.18 SET 2.700 0.21 SET 2.800 0.24 SET 2.900 0.25 SET 3.000 0.26 SET 3.100 0.27 SET 3.200 0.28 SET 3.300 0.28 SET 3.400 0.29 SET 3.500 0.30 SET 3.600 0.32 SET 3.700 0.35 SET 3.800 0.37 SET 3.900 0.39 SET 4.000 0.42 SET 4.100 0.45 SET 4.200 0.48 SET 4.300 0.52 SET 4.400 0.55 SET 4.500 0.59 SET 4.600 0.63 SET 4.700 0.68 SET 4.800 0.73 SET 4.900 0.77 SET 5.000 0.82 SET 5.100 0.88 SET 5.200 0.93 SET 5.300 0.99 SET 5.400 1.06 SET 5.500 1.12 SET 5.600 1.18 SET 5.700 1.25 SET 5.800 1.33 SET 5.900 1.40 SET 6.000 1.47 SET 6.100 1.56 SET 6.200 1.64 SET 6.300 1.73 SET 6.400 1.81 SET 6.500 1.92 SET 6.600 2.00 SET 6.700 2.10 SET 6.800 2.21 SET 6.900 2.32 SET 7.000 2.44 SET 7.100 2.57 SET 7.200 2.69 SET 7.300 2.80 SET 7.400 2.95 SET 7.500 3.09 SET 7.600 3.24 SET 7.700 3.37 SET 7.800 3.52 SET 7.900 3.68 SET 8.000 3.84 SET 8.100 4.02 SET 8.200 4.17 SET 8.300 4.34 SET 8.400 4.49 SET 8.500 4.65 SET 8.600 4.84 SET 8.700 5.03 SET 8.800 5.20 SET 8.900 5.38 SET 9.000 5.59 SET 9.100 5.78 SET 9.200 6.01 SET 9.300 6.22 SET 9.400 6.45 SET 9.500 6.72 SET 9.600 7.05 SET 9.700 7.35 SET 9.800 7.66 SET 9.900 7.99 SET 10.000 10.29 SET 11.000 17.47 SET 12.000 39.07 SET 13.000 62.05 SET 14.000 76.14 SET 15.000 83.95 SET 16.000 88.77 SET 17.000 91.73 SET 18.000 93.54 SET 19.000 94.82 SET 20.000 95.90 SET 21.000 96.80 SET 22.000 97.62 SET 23.000 98.26 SET 24.000 98.74 SET 25.000 99.07 SET 26.000 99.31 SET 27.000 99.49 SET 28.000 99.65 SET 29.000 99.71 SET 30.000 99.76 SET 31.000 99.82 SET 32.000 99.86 SET 33.000 99.89 SET 34.000 99.91 SET 35.000 99.93 SET 36.000 99.96 SET 37.000 99.97 SET 38.000 99.98 SET 39.000 99.99 SET 40.000 99.99 SET 41.000 99.99 SET 42.000 100.00 SET 43.000 100.00 SET 45.000 100.00 SET 46.000 100.00 --- GET 0.053 0.00 GET 0.054 0.00 GET 0.055 0.00 GET 0.067 0.00 GET 0.068 0.00 GET 0.076 0.00 GET 0.082 0.00 GET 0.086 0.00 GET 0.100 0.00 GET 0.110 0.00 GET 0.120 0.00 GET 0.130 0.00 GET 0.140 0.00 GET 0.150 0.00 GET 0.160 0.00 GET 0.170 0.00 GET 0.190 0.00 GET 0.200 0.00 GET 0.210 0.00 GET 0.220 0.00 GET 0.230 0.00 GET 0.240 0.00 GET 0.250 0.00 GET 0.270 0.00 GET 0.280 0.00 GET 0.290 0.00 GET 0.300 0.00 GET 0.320 0.00 GET 0.330 0.00 GET 0.340 0.00 GET 0.350 0.01 GET 0.360 0.01 GET 0.380 0.01 GET 0.400 0.01 GET 0.430 0.01 GET 0.440 0.01 GET 0.460 0.01 GET 0.470 0.01 GET 0.480 0.01 GET 0.500 0.01 GET 0.510 0.01 GET 0.520 0.01 GET 0.530 0.01 GET 0.540 0.01 GET 0.550 0.01 GET 0.560 0.01 GET 0.580 0.01 GET 0.590 0.01 GET 0.600 0.01 GET 0.610 0.01 GET 0.620 0.01 GET 0.630 0.01 GET 0.640 0.01 GET 0.650 0.01 GET 0.660 0.01 GET 0.670 0.01 GET 0.680 0.01 GET 0.690 0.01 GET 0.700 0.01 GET 0.710 0.01 GET 0.720 0.01 GET 0.730 0.01 GET 0.740 0.01 GET 0.750 0.01 GET 0.760 0.01 GET 0.770 0.01 GET 0.780 0.01 GET 0.790 0.01 GET 0.800 0.01 GET 0.810 0.01 GET 0.820 0.01 GET 0.830 0.01 GET 0.840 0.01 GET 0.850 0.02 GET 0.860 0.02 GET 0.870 0.02 GET 0.880 0.02 GET 0.890 0.02 GET 0.900 0.02 GET 0.910 0.02 GET 0.920 0.02 GET 0.930 0.02 GET 0.940 0.02 GET 0.950 0.02 GET 0.960 0.02 GET 0.970 0.02 GET 0.980 0.02 GET 0.990 0.02 GET 1.000 0.02 GET 1.100 0.02 GET 1.200 0.03 GET 1.300 0.04 GET 1.400 0.04 GET 1.500 0.05 GET 1.600 0.05 GET 1.700 0.05 GET 1.800 0.06 GET 1.900 0.06 GET 2.000 0.07 GET 2.100 0.07 GET 2.200 0.08 GET 2.300 0.09 GET 2.400 0.09 GET 2.500 0.11 GET 2.600 0.13 GET 2.700 0.16 GET 2.800 0.18 GET 2.900 0.20 GET 3.000 0.20 GET 3.100 0.21 GET 3.200 0.21 GET 3.300 0.22 GET 3.400 0.24 GET 3.500 0.25 GET 3.600 0.26 GET 3.700 0.28 GET 3.800 0.31 GET 3.900 0.33 GET 4.000 0.36 GET 4.100 0.39 GET 4.200 0.43 GET 4.300 0.46 GET 4.400 0.49 GET 4.500 0.53 GET 4.600 0.57 GET 4.700 0.61 GET 4.800 0.65 GET 4.900 0.69 GET 5.000 0.73 GET 5.100 0.78 GET 5.200 0.83 GET 5.300 0.89 GET 5.400 0.95 GET 5.500 1.01 GET 5.600 1.08 GET 5.700 1.14 GET 5.800 1.21 GET 5.900 1.30 GET 6.000 1.37 GET 6.100 1.45 GET 6.200 1.54 GET 6.300 1.62 GET 6.400 1.71 GET 6.500 1.80 GET 6.600 1.90 GET 6.700 1.99 GET 6.800 2.10 GET 6.900 2.21 GET 7.000 2.33 GET 7.100 2.45 GET 7.200 2.56 GET 7.300 2.67 GET 7.400 2.80 GET 7.500 2.94 GET 7.600 3.08 GET 7.700 3.22 GET 7.800 3.36 GET 7.900 3.51 GET 8.000 3.66 GET 8.100 3.83 GET 8.200 3.99 GET 8.300 4.17 GET 8.400 4.32 GET 8.500 4.49 GET 8.600 4.67 GET 8.700 4.84 GET 8.800 5.00 GET 8.900 5.18 GET 9.000 5.37 GET 9.100 5.58 GET 9.200 5.78 GET 9.300 6.00 GET 9.400 6.25 GET 9.500 6.53 GET 9.600 6.82 GET 9.700 7.11 GET 9.800 7.41 GET 9.900 7.77 GET 10.000 10.13 GET 11.000 17.36 GET 12.000 39.32 GET 13.000 62.21 GET 14.000 76.31 GET 15.000 83.98 GET 16.000 88.82 GET 17.000 91.71 GET 18.000 93.50 GET 19.000 94.77 GET 20.000 95.84 GET 21.000 96.76 GET 22.000 97.58 GET 23.000 98.22 GET 24.000 98.73 GET 25.000 99.07 GET 26.000 99.32 GET 27.000 99.51 GET 28.000 99.66 GET 29.000 99.73 GET 30.000 99.78 GET 31.000 99.83 GET 32.000 99.87 GET 33.000 99.90 GET 34.000 99.92 GET 35.000 99.94 GET 36.000 99.96 GET 37.000 99.97 GET 38.000 99.98 GET 39.000 99.99 GET 40.000 99.99 GET 41.000 99.99 GET 42.000 100.00 GET 43.000 100.00 GET 44.000 100.00 GET 45.000 100.00 GET 46.000 100.00 GET 47.000 100.00 --- [email protected]:~#
Sumnjamo da ovo možete instalirati na Windows-u, ali je sigurno da radi na UNIX distribucijama kao što su RHEL/CentOS, Ubuntu/Debian, macOS itd. Besplatno je, pa možete probati.
Dostupan u CLI i GUI verziji, RDBTools je višeplatformski alat koji ima za cilj da poboljša performanse aplikacije. Kada govorimo o specifičnostima benčmarking-a, ovaj alat ima funkciju analize memorije koja omogućava da se ispita upotreba memorije, analiziraju ključevi, identifikuju curenja memorije i preporuči smanjenje potrošnje memorije.
Možete pratiti performanse u realnom vremenu i obavljati sve vrste administrativnih zadataka putem GUI interfejsa.
Zaključak
Nadam se da će vam ovi alati biti od koristi za Redis benčmarking kako biste bili sigurni u performanse svoje aplikacije.