Redis で Set Operations を実行して、ターゲティング用のデータを抽出およびフィルタリングしています。つまり、セットは次のように表されます
fruits={'orange','lemon','apple'}
vegetables={'tomato'}
citric={'orange','lemon','tomato'}
Jedis クライアントを使用して SUNION と SINTER を実行していますが、100 の同時実行でその夜に観察したことは、SMEMBERS のような単純な操作でも Redis サービスがタイムアウトを返します セットには 7 個以下のアイテムが含まれています
jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.maxActive = 1000;//Arguably High
jedisPoolConfig.minIdle = 300;//Arguably High
jedisPoolConfig.maxIdle = 500; //Arguably High
jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379, 1000);
jedis = jedisPool.getResource();
availableAds = new ArrayList<String>( jedis.smembers("fruits"));
jedisPool.returnResource(jedis);
Java 例外
redis.clients.jedis.exceptions.JedisConnectionException : サーバーが接続を閉じたようです。
Redis エラー ログ
クライアントからのプロトコル エラー: addr=xxxx:xxxx fd=270 idle=0 flags=N db=0 sub=0 psub=0 qbuf=96 obl=47 oll=0 events=rw cmd=smembers
テストは Amazon EC2 ミディアム インスタンス (C1.medium) で実行され、サーブレットは負荷テスト ツールとして blitz.io を使用してテストされました。