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

标签 redis ycsb

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

出现以下错误:

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

谢谢

最佳答案

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

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

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

jedis = new Jedis(host, port);

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

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

关于redis - 从 YCSB 加载 Redis 中的数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22301857/

相关文章:

error-handling - Cassandra如何处理错误?当某些节点出现故障时,它会重试还是失败请求?

hbase - 加速 HBase 读取响应

Redis zslGetElementByRank(t_zset.c) 返回错误地址

ruby - Redis 或 Mongodb 用于确定数字是否在范围内?

python - redis.exceptions.ConnectionError : Error 97 connecting to localhost:6379. 协议(protocol)不支持的地址族

php - 将 php session 移动到 redis。有可能不丢失现有 session 数据吗?

java - 设置单个 Redis 键值的大小限制?

cassandra - YCSB for Cassandra 3.0 基准测试

java - YCSB 构建后无法运行

java - 从抽象类中检索数据