0

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

我收到以下错误:

redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: 在 redis.clients.jedis.Protocol.read(Protocol.java) 的 redis.clients.jedis.Protocol.process(Protocol.java:74) 读取超时:122) 在 redis.clients.jedis.Connection.getIntegerReply(Connection.java:178) 在 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)

谢谢

4

2 回答 2

1

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

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

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

jedis = new Jedis(host, port);

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

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

于 2014-03-10T14:15:07.857 回答
0

有redis.timeout参数,尽量传,比如-p redis.timeout=10000

于 2021-10-06T07:55:54.307 回答