【问题标题】:PHP Cassandra random busy I/O threads, request timed outPHP Cassandra 随机繁忙的 I/O 线程,请求超时
【发布时间】:2021-11-02 14:09:57
【问题描述】:

我有一个 3 节点 Cassandra v3.11.4 集群。复制因子 = 3,每个集群中大约有 70GB 数据。

节点硬件:m5.2xlarge(8 个 vCPU,32 GB RAM,500GB SSD)

一些 YAML 值:

num_tokens: 256
concurrent_reads: 32
concurrent_writes: 32
concurrent_counter_writes: 32
endpoint_snitch: SimpleSnitch

来自负载平衡计算引擎的 PHP 连接:

$cluster = Cassandra::cluster()->withPort(PORT)->withDefaultConsistency(Cassandra::CONSISTENCY_LOCAL_QUORUM)->withContactPoints(HOST_VAL)->withIOThreads(5)->withCredentials(CASS_USER, CASS_PASS)->build();
$session = $cluster->connect(KEYSPACE);
$statement = $session->prepare($query);
$stmt = $session->execute($statement, ['arguments' => $bindParams]);

Cassandra 服务在大部分时间运行平稳,但每隔 5-6 小时就会有 5-10 分钟出现 PHP 操作错误:

Cassandra\Exception\RuntimeException: All connections on all I/O threads are busy

Cassandra\Exception\RuntimeException: All hosts in current policy attempted and were either unavailable or failed

Cassandra\Exception\TimeoutException: Request timed out

我猜测问题在于 PHP 连接会导致 Cassandra 节点停滞或生成过多连接。

请帮助我在哪里寻找可能的原因,或者是否有任何SHOW PROCESSLIST 之类的命令来监视当前连接,例如在 MySQL 中。

【问题讨论】:

    标签: php cassandra


    【解决方案1】:

    这些错误表明节点正在过载并且变得无响应,从而导致TimeoutException - 副本在请求超时内没有响应协调器。

    当节点忙时,请求排队等待服务。当队列达到最大大小并且来自客户端的任何新请求不再排队时,就会出现一个点。

    检查表明节点过载的长 GC。将这些时间与您的应用程序的读/写流量相关联(您将从应用程序监控中获得这些指标)。

    我的猜测是,您的应用程序的流量并不平稳,而是每隔几个小时就会达到峰值。在应用程序流量高峰期间,集群会过载。如果是这种情况,您需要通过添加更多节点来调整集群的大小以应对高峰流量。干杯!

    【讨论】:

    • 嘿埃里克!谢谢您的帮助。我检查了日志,条目与此类似:Total time for which application threads were stopped: 0.04s, Stopping threads took: 0.0001s. Heap before GC invocations=10582 (full 95). par new generation total 737280K, used 729652K. eden space 655360K, 100% used. from space 81920K, 90% used. to space 81920K, 0% used. GC (Allocation Failure). Heap after GC invocations=10583 (full 95)。此外,每个节点发生超时时的 CPU 使用率约为 25%。是不是 C* 无法充分利用节点硬件?
    • 如果不查看集群的诊断信息,真的很难知道。您需要自己查看 Cassandra 节点上的日志以找出问题所在。干杯!
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多