Cassandra:OperationTimedOut:errors = {},last_host = 127.0.0.1

时间:2016-08-02 09:54:55

标签: cassandra

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

cqlsh 5.0.1 | Cassandra 3.0.8

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

  1. 在文件cassandra / conf / cassandra.yaml中,我增加了几个request_time_out设置,而不是重新启动了cassandra
  2. 我在文件夹.cassandra中创建了文件cqlshrc,并在下面的文件中添加了

    [连接]

    client_timeout = 2000000

  3. stackoverflow中很少有解决方案建议在文件cqlsh中增加一些超时字段,但File' / cassandra / bin / cqlsh'没有任何这样的字段,所以我没有改变该文件中的任何内容。 cqlsh文件内容在

  4. 之下

    python -c' import sys; sys.exit(不是(0x020700b0< sys.hexversion< 0x03000000))' 2> / dev / null \     &安培;&安培; exec 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" " $ @" DONE echo"找不到合适的python解释器。" >和2 退出1

    请解决方案。

1 个答案:

答案 0 :(得分:3)

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

计算大牌桌的一个解决方案是使用'计数器'输入另一张表。

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

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

每次我们在'用户'中插入用户表格,我们会在' 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