Redis と Twemproxy を使用して非常に単純なセットアップをテストしようとしていますが、高速化する方法が見つかりません。
最小限の構成で実行する 2 つの redis サーバーがあります。
./redis-server --port 6370
./redis-server --port 6371
ソースからコンパイルされ、適切なメモリと CPU をすべて備えた 1 台のマシンで実行されます。
インスタンスの 1 つで redis-benchmark を実行すると、次の結果が得られます。
./redis-benchmark --csv -q -p 6371 -t set,get,incr,lpush,lpop,sadd,spop -r 100000000
"SET","161290.33"
"GET","176366.86"
"INCR","170940.17"
"LPUSH","178571.42"
"LPOP","168350.17"
"SADD","176991.16"
"SPOP","168918.92"
ここで、2 つのインスタンスの前で Twemproxy を使用して、リクエストを分散し、より高いスループットを取得したいと考えています (少なくとも、これは私が期待していたものです!)。
Twemproxy には次の構成を使用しました。
my_cluster:
listen: 127.0.0.1:6379
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: false
redis: true
servers:
- 127.0.0.1:6371:1 server1
- 127.0.0.1:6372:1 server2
そして、くるみ割り人形を次のように実行します。
./nutcracker -c twemproxy_redis.yml -i 5
結果は非常に残念です:
./redis-benchmark -r 1000000 --csv -q -p 6379 -t set,get,incr,lpush,lpop,sadd,spop-q -p 6379
"SET","112485.94"
"GET","113895.21"
"INCR","110987.79"
"LPUSH","145560.41"
"LPOP","149700.61"
"SADD","122100.12"
Twemproxy の統計を次のように取得して、何が起こっているのかを理解しようとしました。
telnet 127.0.0.1 22222
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
{
"service": "nutcracker",
"source": "localhost.localdomain",
"version": "0.4.1",
"uptime": 10,
"timestamp": 1452545028,
"total_connections": 303,
"curr_connections": 3,
"my_cluster": {
"client_eof": 300,
"client_err": 0,
"client_connections": 0,
"server_ejects": 0,
"forward_error": 0,
"fragments": 0,
"server1": {
"server_eof": 0,
"server_err": 0,
"server_timedout": 0,
"server_connections": 1,
"server_ejected_at": 0,
"requests": 246791,
"request_bytes": 11169484,
"responses": 246791,
"response_bytes": 1104215,
"in_queue": 0,
"in_queue_bytes": 0,
"out_queue": 0,
"out_queue_bytes": 0
},
"server2": {
"server_eof": 0,
"server_err": 0,
"server_timedout": 0,
"server_connections": 1,
"server_ejected_at": 0,
"requests": 353209,
"request_bytes": 12430516,
"responses": 353209,
"response_bytes": 2422648,
"in_queue": 0,
"in_queue_bytes": 0,
"out_queue": 0,
"out_queue_bytes": 0
}
}
}
Connection closed by foreign host.
適切に動作する他のベンチマークはありますか? それともredis-benchmark
働いていたはずですか?
Redis: 3.0.6 と Twemproxy: 0.4.1 を使用していることを忘れていました。