Cassandra CQLSH OperationTimedOut error=客户端请求超时.看到Session.ex



我想将数据从一个Cassandra集群(通过192.168.0.200到达)传输到另一个Cassandra集群(通过127.0.0.1到达)。数据是523行,但每一行约1 MB。我使用COPY FROM和COPY TO命令。当我发出COPY TO命令时,我得到以下错误:

Error for (8948428671687021382, 9075041744804640605):
OperationTimedOut - errors={
'192.168.0.200': 'Client request timeout. See Session.execute[_async](timeout)'},
last_host=192.168.0.200 (will try again later attempt 1 of 5).

我试图将~/.cassandra/cqlshrc文件更改为:

[connection]
client_timeout = 5000

您可能想要增加请求超时(默认:10秒),而不是连接超时。

试题:

cqlsh --request-timeout=6000

或添加:

[connection]
request_timeout = 6000

~/.cassandra/cqlshrc文件

关于复制超时,正确的方法是使用已经指出的PAGETIMEOUT参数。

复制用于。

/blockquote>

尝试用cqlsh设置——request-timeout=6000在这种情况下没有帮助

我不知道你用的是哪个版本的Cassandra所以我假设是3.0.x

COPY函数是好的,但并不总是最好的选择(即,如果你有很多数据),然而,对于这个,虽然你可能要检查一些你的超时设置在cassandra

这里的文档也显示了一个页面超时设置,这可能会对您有所帮助。

可以通过许多其他方式在两个集群之间移动数据。您可以使用以下任何一种:

  1. sstableloader
  2. 像java驱动程序
  3. 一样的驱动程序之一
  4. 使用spark将数据从一个集群复制到另一个集群,如本例
  5. 使用OpsCenter克隆集群
  6. cassandra批量加载器(我知道很多人使用这个)

当然#3和#4需要DSE cassandra,但这只是给你一个想法。我不确定你使用的是Apache Cassandra还是Datastax Enterprise Cassandra。

无论如何,希望这有助于!

嗨,除了下面这些,

1。检查墓碑
在cassandra tombstones中,会降低读取性能,并出现以下问题operationtimeout: errors={'127.0.0.1': '客户端请求超时。看到会话。execute_async}, last_host = 127.0.0.1
注意
当我们向表中插入列中为空值的数据时,它会创建一个墓碑。我们需要在表中避免null插入。
spark中有多个选项,如unset(https://docs.datastax.com/en/latest-csharp-driver-api/html/T_Cassandra_Unset.htm)和ignoreNulls (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md)属性。
您可以使用以下命令
检查表状态Nodetool tablestats keyspace .tablename

2。删除墓碑
如果您在单个节点上工作,则可以通过更改表来删除墓碑修改表keyspace1.tablenameWITH gc_grace_seconds = '0';

3。read_request_timeout_in_ms:在cassandra中配置。Yaml文件增加读请求超时

如果有人需要增加python Cassandra客户端的默认超时:

cas_cluster = Cluster(..)
cas_session = cas_cluster.connect(cas_keyspace)
cas_session.default_timeout = 60 # default is 10 sec.
cas_query_resultset = cas_session.execute("..")

相关内容

  • 没有找到相关文章

最新更新