当前位置: 首页 > 知识库问答 >
问题:

当cassandra驱动程序执行查询时,cassandra驱动程序返回错误OPationTimedOut

明安阳
2023-03-14

我使用python脚本,它传递给卡桑德拉批处理查询,如下所示:

query = 'BEGIN BATCH ' + 'insert into ... ; insert into ... ; insert into ...; ' + ' APPLY BATCH;'
session.execute(query)



这是一段时间的工作,但在启动脚本失败并打印后约2分钟内:

Traceback (most recent call last):<br>
  File "/home/fervid/Desktop/cassandra/scripts/parse_and_save_to_cassandra.cgi", line 127, in <module><br>
    session.execute(query)<br>
  File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 1103, in execute<br>
    result = future.result(timeout)<br>
  File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 2475, in result<br>
    raise OperationTimedOut(errors=self._errors, last_host=self._current_host)<br>
cassandra.OperationTimedOut: errors={}, last_host=127.0.0.1<br>
<br>
<br>

我将超时从 cassandra.yaml 更改为:
read_request_timeout_in_ms:15000
range_request_timeout_in_ms:20000
write_request_timeout_in_ms:20000
cas_contention_timeout_in_ms:10000
request_timeout_in_ms:25000


然后我重新启动了 cassandra,但这没有帮助。错误一次又一次地发生!

日志中脚本失败时间附近的行:

信息[BatchlogTasks:1]2014-06-11 14:18:10490 ColumnFamilyStore.java(第794行)排队刷新Memtable-batchlog@28149592(13557969/13557969序列化/活动字节,4个操作)
信息[FlushWriter:10]2014-06-11 14:18:10490 Memtable.java(第363行)写入Memtable-batchlog@28149592(13557969/13557969序列化/活动字节,4个操作)
信息[FlushWriter:10]2014-06-11 14:18:10566 Memtable.java(第410行)已完成刷新;无需保留任何内容。提交日志位置为ReplayPosition(segmentId=1402469922169,position=27138996)
INFO[ScheduledTasks:1]2014-06-11 14:18:13758 GCInspector.java(第116行)ParNew的GC:3个集合640 ms,使用775214160;最大值为1052770304<br>INFO〔ScheduledTasks:1〕2014-06-11 14:18:16155 GCInspector.java(第116行)ConcurrentMarkSweep的GC:2个集合1838 ms,使用810976000;max为1052770304<br>INFO〔ScheduledTasks:1〕2014-06-11 14:18:17959 GCInspector.java(第116行)ConcurrentMarkSweep的GC:1个集合1612 ms,使用85840408;最大值为1052770304
INFO[ScheduledTasks:1]2014-06-11 14:18:17959 StatusLogger.java(第55行)池名称活动
待定已完成阻止所有时间阻止
INFO[ScheduledTasks:1]2014-06-111 14:18:17959 Status Logger.ja(第70行)ReadStage 0 627 0
信息[ScheduredTasks:1]2014-06-11 14:15:17960 StatusLogger.java[ScheduledTasks:1]2014-06-11 14:18:17960 StatusLogger.java(第70行)ReadRepairStage 0 0 0
INFO[SchededTasks:1]2014-06-111 14:18:7960 StatusLogger.jav(第70行)MutationStage 0
0 184386 0

共有2个答案

赫连俊悟
2023-03-14

根据文档,此错误表示操作花费的时间比客户端指定的时间长。错误是由驱动程序而不是Cassandra生成的。我仍在寻找自己处理这个错误的方法。

http://datastax.github.io/python-driver/api/cassandra.html#cassandra.OperationTimedOut

长孙哲
2023-03-14

>

  • 这是客户端超时(请参阅@Syrial回复中的链接:http://datastax.github.io/python-driver/api/cassandra.html#cassandra.OperationTimedOut)

    您可以更改会话默认超时:

    session = cluster.connect()
    session.default_timeout = 30  # this is in *seconds*
    

    您可以更改特定查询的超时:

    session.execute(statement, 30, ...)
    

    通过在BATCH中使用准备好的语句,可以大大加快执行速度。请参阅本文中的Batching语句部分

    如果您想要更好的结果,请阅读这些性能说明

  •  类似资料:
    • 我正在使用php的Datastax Cassandra驱动程序,希望能够检查是否查询失败,在数据库中没有找到结果。现在,如果查询失败,日志报告如下 如果查询成功,它将返回预期的数据。下面是函数 根据发布的建议,我最后做了以下几点 谢谢你的建议

    • 查询从something_data中选择username作为col6、性别作为col1、last_name作为col2、email作为col3、first_name作为col4、something_uuid作为col5、group_email作为col7、deleted作为col8、puars作为col9,其中username=?;在/xx.yy.91.205:9042上未准备,请在重试执行之前准

    • 我被datastax cassandra驱动程序卡住了,它抛出了这个错误: 我已经用gradle导入了库,我看到org.slf4j: slf4j-api: 1.7.5在“外部库”树中(我正在使用Intellij IDEA)。 你有办法解决这个问题吗?我发现这个帖子接近我的问题(NoClassDefFoundError-datastax Java driver for Cassandra),但没有人

    • 我试图理解Datastax Cassandra驱动程序中的连池,因此我可以更好地在我的Web服务中使用它。 我有留档的1.0版。它说: Java驱动程序异步使用连接,因此可以在同一个连接上同时提交多个请求。 他们通过连接理解什么?当连接到集群时,我们有:一个生成器、一个集群和一个会话。他们中的哪一个是连接? 例如,有一个参数: MaxSimultaneousRecestsPerConnection

    • 所以我在Cassandra数据库中有一个UDT: 当我查询这个时,我可以得到UDTValue,但我不确定如何映射到UDTClass,因为我使用的是Cassandra Java驱动程序2.2.0rc3 在2.1中,有一些类似于本教程的说明。但在2.2.0中,这个(UDTMapper)似乎已经被删除或尚未添加。怎样才能做同样的事情,或者仅仅为了达到同样的效果? 谢谢。

    • 嘿,我是Cassandra的新手,我对Spring jdbc模板很友好。 有人能解释一下这两种方法的区别吗?你能建议哪一种更好用吗? 谢谢。