【问题标题】:Native Transport Requests in CassandraCassandra 中的本机传输请求
【发布时间】:2018-10-30 04:05:30
【问题描述】:

我使用此链接获得了有关 Cassandra 中本机传输请求的一些观点:What are native transport requests in Cassandra?

据我了解,我在 Cassandra 中执行的任何查询都是本机传输请求。

我在 Cassandra 中经常遇到 Request Timed Out 错误,我在 Cassandra 调试日志 以及使用 nodetool tpstats

中观察到以下日志
/var/log/cassandra# nodetool tpstats
Pool Name                    Active   Pending      Completed   Blocked  All time blocked
MutationStage                     0         0      186933949         0                 0
ViewMutationStage                 0         0              0         0                 0
ReadStage                         0         0      781880580         0                 0
RequestResponseStage              0         0        5783147         0                 0
ReadRepairStage                   0         0              0         0                 0
CounterMutationStage              0         0       14430168         0                 0
MiscStage                         0         0              0         0                 0
CompactionExecutor                0         0         366708         0                 0
MemtableReclaimMemory             0         0            788         0                 0
PendingRangeCalculator            0         0              1         0                 0
GossipStage                       0         0              0         0                 0
SecondaryIndexManagement          0         0              0         0                 0
HintsDispatcher                   0         0              0         0                 0
MigrationStage                    0         0              0         0                 0
MemtablePostFlush                 0         0            799         0                 0
ValidationExecutor                0         0              0         0                 0
Sampler                           0         0              0         0                 0
MemtableFlushWriter               0         0            788         0                 0
InternalResponseStage             0         0              0         0                 0
AntiEntropyStage                  0         0              0         0                 0
CacheCleanupExecutor              0         0              0         0                 0
Native-Transport-Requests         0         0      477629331         0           1063468

Message type           Dropped
READ                         0
RANGE_SLICE                  0
_TRACE                       0
HINT                         0
MUTATION                     0
COUNTER_MUTATION             0
BATCH_STORE                  0
BATCH_REMOVE                 0
REQUEST_RESPONSE             0
PAGED_RANGE                  0
READ_REPAIR                  0

1) All time blocked 状态是什么?
2)这个值是多少:1063468 表示?它的危害有多大?
3) 如何调整?

【问题讨论】:

  • 你到底用的是哪个版本?
  • @ChrisLohfink 3.11.1

标签: cassandra cassandra-3.0


【解决方案1】:

NTR 阶段会处理每个请求,然后再将其移交给读取/变异阶段,但它在等待完成时仍会阻塞。为了防止过载,阶段开始阻止将任务添加到其队列中以向客户端施加背压。每次请求被阻止时,all time blocked 计数器都会增加。因此,1063468 请求由于必须备份许多请求而曾一度被阻止一段时间。

在应用程序出现查询高峰的情况下,这种阻塞是不必要的,并且可能会导致问题,因此您可以使用 -Dcassandra.max_queued_native_transport_requests=4096(默认 128)之类的内容来增加此队列限制。您也可以在客户端限制请求,但首先尝试增加队列大小。

也可能有一些异常缓慢的请求阻塞了您的系统。如果您有监控设置,请查看高百分比读/写协调器延迟。您也可以使用nodetool proxyhistograms。您的数据模型或查询中可能存在问题。

【讨论】:

  • 感谢您的回复。我仍然有几个疑问,1)为什么这个值(所有时间被阻止)没有减少? 2)我需要在jvm选项中设置这个参数 -Dcassandra.max_queued_native_transport_requests=4096 吗? 3) 我正在使用 Apache Cassandra,您能否指出可用于 Apache Cassandra 的工具监控设置?
  • 另外你认为这会导致 RequestTime Out 吗?
  • 最佳值是多少:cassandra.max_queued_native_transport_requests
  • 所有阻塞时间衡量自上次 Cassandra 启动以来阻塞了多少任务,减少它是没有意义的。你不需要,但它可能会有所帮助。它可能是请求超时的部分原因,但错误的查询/表也可能是它被阻止的原因。查看代理直方图和表直方图以找出查询速度慢的表并从那里进行调试。最佳值:这取决于,如果有一个最佳值,它将被设置为它。它因用例和数据模型而异。
猜你喜欢
  • 2018-10-31
  • 2017-01-09
  • 2015-12-04
  • 1970-01-01
  • 2014-02-08
  • 2018-06-12
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多