【问题标题】:Cassandra : OperationTimedOut: errors={}, last_host=127.0.0.1Cassandra:OperationTimedOut:错误={},last_host=127.0.0.1
【发布时间】:2016-12-07 14:51:31
【问题描述】:

我正在尝试“从用户中选择计数(*);”在 cassandra 上,但在等待 10 秒(大约)后,我得到“OperationTimedOut:errors={},last_host=127.0.0.1”。我正在 cqlsh 上尝试这个。 cqlsh 和 cassandra 版本如下。

cqlsh 5.0.1 |卡桑德拉 3.0.8

我在 stackoverflow 上找到了一些解决方案。但他们都没有工作。我在下面试过了。

  1. 在文件 cassandra/conf/cassandra.yaml 中,我增加了一些 request_time_out 设置,然后重新启动了 cassandra
  2. 我在文件夹 .cassandra 中创建了文件 cqlshrc 并在该文件下面添加了

    [连接]

    client_timeout = 2000000

  3. stackoverflow 中很少有解决方案建议增加文件 cqlsh 中的一些超时字段,但文件 '/cassandra/bin/cqlsh' 没有任何此类字段,因此我没有更改该文件中的任何内容。 cqlsh 文件内容如下

python -c '导入系统; sys.exit(不是 (0x020700b0 /dev/null \ && 执行 python "python -c "import os;print(os.path.dirname(os.path.realpath('$0')))"/cqlsh.py" "$@" 用于 2.7 中的 pyver;做 其中 python$pyver > /dev/null 2>&1 && exec python$pyver "python$pyver -c "import os;print(os.path.dirname(os.path.realpath('$0')))"/cqlsh.py" "$@" 完毕 echo "没有找到合适的 python 解释器。" >&2 1号出口

请解决。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    如果 Cassandra 服务器正常工作,则会引发超时异常,因为服务器无法处理请求。 'users' 表是否太大?

    计算大表的一种解决方案是在另一个表中使用“计数器”类型。

    例如,我们可以这样创建一个表:

    CREATE TABLE custom_counters
        (name varchar,
        count counter,
        PRIMARY KEY (name)
    );
    

    每次我们在“users”表中插入一个用户时,我们都会在“custom_counters”表中更新其计数器:

    UPDATE custom_counters
        SET count = count + 1
        WHERE name='users';
    

    所以,当我们需要知道用户数量时,我们必须请求该字段:

    SELECT count FROM custom_counters WHERE name = 'users';
    

    更多信息在这里:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html

    【讨论】:

    • 用户表大约 25 GB。
    • 我认为 25 GB 对于 'count' 命令来说太多了,因为要迭代的行太多了。
    猜你喜欢
    • 2016-01-23
    • 2016-05-25
    • 2015-12-10
    • 2016-10-11
    • 2016-09-16
    • 2017-07-06
    • 2019-03-15
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多