从YCSB加载Redis中的数据时出错

时间:2014-03-10 13:43:27

标签: redis ycsb

我正在尝试从ycsb load data命令加载redis服务器中的数据。它运行良好,有1百万条记录,但当我尝试加载更多数据(如2.5亿条记录)时,它会运行一段时间,然后通过提供以下异常显示加载错误。任何人都可以建议哪里出错了?

我收到以下错误:

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)         在com.yahoo.ycsb.db.RedisClient.insert(RedisClient.java:97)         在com.yahoo.ycsb.DBWrapper.insert(DBWrapper.java:148)         在com.yahoo.ycsb.workloads.CoreWorkload.doInsert(CoreWorkload.java:461)         在com.yahoo.ycsb.ClientThread.run(Client.java:269)

由于

1 个答案:

答案 0 :(得分:1)

听起来问题是暂停。考虑到您定义的巨大工作量,这并不奇怪。

您可以尝试修改YCSB连接到Redis的方式,以添加比默认时间更长的超时。

在com.yahoo.ycsb.db.RedisClient中,替换

jedis = new Jedis(host, port);

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

TIMEOUT是一个整数。 Jedis中的默认值是2000,我假设这意味着2秒。