私のアプリは、redis をキャッシュとして、redis-py をクライアントとして使用してアクセスします。1 つの特別なリクエストで、LRANGE、GET、LLEN を含む 65 回の redis 訪問が呼び出されます。
4 req/s のテストでは、コマンドredis-cli client list | wc -l
はテストの実行中に常に 3 つの接続を示します。しかし、同時要求が 50 要求/秒に増加すると、テストの実行中に redis クライアント接続数が増加したことが示されます。3 分間で、接続数は 1000 以上に増加します。その結果、アプリのパフォーマンスが大幅に低下します。
では、問題の原因は何でしょうか? どんな提案でも大歓迎です。
redis-benchmark -n 100000 -q の結果は
PING_INLINE: 73637.70 requests per second
PING_BULK: 75414.78 requests per second
SET: 75301.21 requests per second
GET: 75528.70 requests per second
INCR: 75930.14 requests per second
LPUSH: 76103.50 requests per second
LPOP: 74074.07 requests per second
SADD: 75301.21 requests per second
SPOP: 74794.31 requests per second
LPUSH (needed to benchmark LRANGE): 75301.21 requests per second
LRANGE_100 (first 100 elements): 38182.51 requests per second
LRANGE_300 (first 300 elements): 15128.59 requests per second
LRANGE_500 (first 450 elements): 11152.00 requests per second
LRANGE_600 (first 600 elements): 8797.40 requests per second
MSET (10 keys): 42936.88 requests per second
アプリとredisは同じ仮想ホストで動作しており、ベース環境はE5-2620 * 2 CPU、4G Memです。