Pregunta

I am Trying to load data in redis server from ycsb load data command. It is working Fine with 1 Million records but when am trying to load more data like 250 million records then it is running for some time and after that it show error in loading by giving following exception. Can anybody suggest where am going wrong ?

Am getting following error :

redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out at redis.clients.jedis.Protocol.process(Protocol.java:74) at redis.clients.jedis.Protocol.read(Protocol.java:122) at redis.clients.jedis.Connection.getIntegerReply(Connection.java:178) at redis.clients.jedis.Jedis.zadd(Jedis.java:1448) at com.yahoo.ycsb.db.RedisClient.insert(RedisClient.java:97) at com.yahoo.ycsb.DBWrapper.insert(DBWrapper.java:148) at com.yahoo.ycsb.workloads.CoreWorkload.doInsert(CoreWorkload.java:461) at com.yahoo.ycsb.ClientThread.run(Client.java:269)

Thanks

¿Fue útil?

Solución

It sounds like the problem is a timeout. It's not surprising considering the huge workload you defined.

You could try to modify the way YCSB connects to Redis, to add a longer timeout than the default one.

In com.yahoo.ycsb.db.RedisClient, replace

jedis = new Jedis(host, port);

with

jedis = new Jedis(host, port, TIMEOUT);

With TIMEOUT being an integer. The default value in Jedis is 2000, which I assume means 2 seconds.

Otros consejos

There is redis.timeout paramater, try to pass, for example, -p redis.timeout=10000

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top