3

当通过 Pycassa 从 Cassandra 获取行时,有时会使用TApplicationException: get_slice failed: unknown result].

我无法重现此异常,也找不到有关此问题的任何文档。现在我将 Cassandra 作为单个节点(用于开发)运行,并且总是在发生大量并发请求的上下文中引发异常。我想知道造成这种情况的原因是性能问题还是与其他问题有关(因此我想知道在生产中运行多个节点时它是否会消失?)。

Cassandra 版本为 1.0.7,日志输出如下:

[DEBUG 17:45:58,253 Thrift transport error occurred during processing of message.
org.apache.thrift.transport.TTransportException
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
    at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84)
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378)
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297)
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204)
    at org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2877)
    at org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:187)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
DEBUG 17:45:58,315 logged out: #<User allow_all groups=[]>]
4

1 回答 1

3

如果您使用多处理,pycassa.pool 不是 multiprocessing-safe

在类似情况下,我收到“TApplicationException:get_slice failed:unknown result”。我创建了多个 pycassa.pools,每个进程一个池,问题似乎解决了。

该文档有一个特殊页面向我们提供有关多处理和池的建议,但它没有列出如果您使用一个池进行多处理会出现什么错误。我觉得这就是!

于 2012-12-12T20:56:39.503 回答