Let's go on testing RedisSharding, but this time we'll take redis-benchmark as the client. The conditions are the same.
Let's launch the client with one connection:
Port: 6380 Redis (1 redis-server) 8000 RedisSharding (for 4 nodes) 9000 twemproxy (nutcracker) (for 4 nodes) ./redis_sharding --port=8000 --nodes=127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384 +RTS -s -N4 -A10M -qa > redis-benchmark -p 8000 -n 10000 -c 10 -q -t set,get SET: 24038.46 requests per second GET: 24038.46 requests per second > redis-benchmark -p 9000 -n 10000 -c 10 -q -t set,get SET: 69444.45 requests per second GET: 58823.53 requests per secondAnd now we'll enable the Pipeline mode and will be increasing the number of commands in one Pipeline gradually.
> redis-benchmark -p 8000 -n 10000 -c 10 -q -t set,get -P 100 SET: 217391.30 requests per second GET: 250000.00 requests per second > redis-benchmark -p 9000 -n 10000 -c 10 -q -t set,get -P 100 SET: 277777.78 requests per second GET: 312500.00 requests per secondHowever, RedisSharding uses all the 4 core sets while the twemproxy is one-thread.
Let's launch the client with one connection:
> redis-benchmark -p 8000 -n 10000 -c 1 -q -t set,get -P 100 SET: 70422.54 requests per second GET: 76335.88 requests per second > redis-benchmark -p 9000 -n 10000 -c 1 -q -t set,get -P 100 SET: 227272.73 requests per second GET: 263157.91 requests per secondBut why should we abandon usage of all the processor's core sets?
> redis-benchmark -p 6380 -n 10000 -c 20 -q -t set,get -P 1000 SET: 256410.25 requests per second GET: 232558.14 requests per second > redis-benchmark -p 8000 -n 10000 -c 20 -q -t set,get -P 1000 SET: 147058.83 requests per second GET: 151515.16 requests per second > redis-benchmark -p 9000 -n 10000 -c 20 -q -t set,get -P 1000 SET: 129870.13 requests per second GET: 100000.00 requests per secondWe are increasing it more and we see that with such size of Pipeline it is Redis itself giving up.
> redis-benchmark -p 6380 -n 10000 -c 20 -q -t set,get -P 10000 SET: 17421.60 requests per second GET: 21834.06 requests per secondWhile RedisSharding, judging from the above information, is perfectly fine:
> redis-benchmark -p 8000 -n 10000 -c 20 -q -t set,get -P 10000 SET: 13280.21 requests per second GET: 19011.41 requests per secondWhat can't be said of nutcracker.
> redis-benchmark -p 9000 -n 10000 -c 20 -q -t set,get -P 10000 Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer Writing to socket: Connection reset by peer SET: 17064.85 requests per second zmalloc: Out of memory trying to allocate 335799 bytes Abort > nutcracker-0.2.2/src/nutcracker -c twemproxy/nutcracker0.yml [Fri Jan 25 09:36:19 2013] nc.c:177 nutcracker-0.2.2 started on pid 19962 [Fri Jan 25 09:36:19 2013] nc.c:181 run, rabbit run / dig that hole, forget the sun / and when at last the work is done / don't sit down / it's time to dig another one [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_util.c:223 malloc(16384) failed @ nc_mbuf.c:46 [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 8 failed: Connection reset by peer [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 9 failed: Broken pipe [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 10 failed: Broken pipe [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 11 failed: Broken pipe [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 12 failed: Broken pipe [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 13 failed: Broken pipe [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 14 failed: Broken pipe [Fri Jan 25 09:38:28 2013] nc_connection.c:384 sendv on sd 15 failed: Broken pipe
Комментариев нет:
Отправить комментарий