Objevte, jak efektivně funguje vaše databáze Redis, kdy může dojít k jejím limitům, jaká je její propustnost a rychlost přenosu dat. Následující nástroje vám s tím pomohou.
Redis (Remote Dictionary Service) si v posledních letech získal značnou oblibu.
Využívá se nejen v podnikových aplikacích, ale i v menších projektech. Redis můžete dokonce použít v kombinaci s redakčním systémem WordPress pro účinnější ukládání do mezipaměti, což vede ke zlepšení celkového výkonu. Pokud se o Redis chcete dozvědět více, můžete se podívat na tento online kurz.
Jako vývojář nebo správce systému pro firemní aplikace byste měli pravidelně provádět benchmark testy. Díky nim můžete získat přehled o výkonu a možnostech vaší aplikace. Benchmarkování Redis se liší od testování webového serveru. Dobrou zprávou je, že existuje mnoho bezplatných nástrojů, které můžete použít.
Jste připraveni na prozkoumání těchto možností?
Redis-benchmark
Využijte vestavěný nástroj pro benchmark testy Redis, který se nazývá redis-benchmark. Je součástí instalace Redis a stačí jej spustit zadáním příkazu redis-benchmark
v prostředí operačního systému UNIX. Je dostupný i pro Windows, kde se spouští pomocí souboru redis-benchmark.exe
.
Podívejme se na několik příkladů.
Odeslání jednoho milionu požadavků na adresu 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 požadavků byl zpracován za 30,62 sekund. Zaznamenali jste také, že poslední řádek ukazuje, že je obslouženo přibližně 32 653 požadavků za sekundu.
Důležité je si všimnout, že velikost datové části je standardně 3 bajty. Tuto velikost můžete změnit pomocí parametru -d
. Následující test ukazuje výsledek pro 100 000 požadavků s datovou částí o velikosti 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
Všimli jste si počtu paralelních klientů? Ve výchozím nastavení jich je 50. Počet klientů můžete upravit pomocí parametru -c
. Následující příklad ukazuje výsledek pro 200 klientů.
[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
Jak můžete vidět, se 200 klienty se celková doba testu prodloužila a rychlost zpracování požadavků klesla. Toto je očekávaný výsledek, který vám pomůže odhalit skutečný výkon vaší aplikace.
Nejste spokojeni s vestavěným nástrojem Redis-benchmark? Nezoufejte, existují další možnosti.
Redis-cli
Zajímají vás specificky informace o latenci?
V tom případě můžete použít redis-cli
, který je součástí instalace Redis. Můžete jej spustit s parametrem --latency
.
[email protected]:~# redis-cli --latency min: 0, max: 1, avg: 0.16 (1056 samples
Ve výchozím nastavení se vzorek latence zaznamenává každou sekundu, ale můžete to změnit pomocí parametru -i
.
Memtier Benchmark
Memtier Benchmark od Redis Labs podporuje jak Redis, tak i Memcache. Je to pokročilý nástroj pro benchmark testy, který nabízí mnoho funkcí:
- Testování Redis s heslem
- Spouštění klientů v cluster režimu
- Nastavení počtu klientů, požadavků, vláken a velikosti dat
- Úprava poměru mezi příkazy SET a GET
a mnohem více…
Zde je rychlý testovací výstup:
[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]:~#
Nástroj pravděpodobně nelze nainstalovat na Windows, ale určitě to lze provést na systémech s distribucí UNIX, jako jsou RHEL/CentOS, Ubuntu/Debian, MacOS atd. Je zdarma.
K dispozici je verze jak s příkazovým řádkem (CLI), tak i s grafickým rozhraním (GUI). RDBTools je multiplatformní nástroj, který si klade za cíl pomoci s optimalizací výkonu aplikací. Nabízí funkci pro analýzu paměti, která umožňuje sledovat využití paměti, analyzovat klíče, identifikovat úniky paměti a doporučovat snížení využití paměti.
Pomocí GUI můžete sledovat výkon v reálném čase a provádět různé administrativní úlohy.
Závěr
Doufám, že vám výše uvedené nástroje pomohou s benchmark testy Redis, abyste získali přehled o výkonu vaší aplikace.