【问题标题】:Error in loading data in Redis From YCSB从 YCSB 加载 Redis 数据时出错
【发布时间】:2014-03-10 13:43:26
【问题描述】:

我正在尝试通过 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)

谢谢

【问题讨论】:

标签: redis ycsb


【解决方案1】:

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

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

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

jedis = new Jedis(host, port);

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

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

【讨论】:

  • 非常感谢它解决了我的问题我在 Redis 客户端中进行了更改,我很高兴 :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 2017-09-29
    • 2016-03-28
    • 1970-01-01
    • 2018-07-02
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多