【问题标题】:High CPU Utilisation Cassandra (Native Transport Request)高 CPU 利用率 Cassandra(本机传输请求)
【发布时间】:2017-01-09 07:14:04
【问题描述】:

我们正在生产中运行 cassandra 2.0.9 版。这是一个 4 节点集群。在过去的几天里,我们正在经历 CPU 利用率的高峰值。您可以在下图中看到。

这是 jconsole 输出。

当我们查看消耗大量 CPU 的线程时,我们遇到了 Native Transport 请求,这些线程消耗了大量 CPU(例如 12%),这是巨大的。

线程堆栈跟踪。

线程信息。

线程 CPU%。

问题可能是我们应该如何调试它?

为什么大部分 NTR 请求都停留在 BCrypt.java 上?是这个问题吗?

几天前集群运行正常,但现在 4 个节点中有 3 个始终处于高 CPU 利用率。

【问题讨论】:

    标签: cassandra datastax cassandra-2.0 datastax-php-driver


    【解决方案1】:

    您已启用身份验证,该身份验证存储 bcrypted 哈希,而不是密码。所以每个请求都需要检查。如果您不断创建新连接而不是重用经过身份验证的会话,这最终将成为 CPU 问题。会话是长期存在的对象,默认情况下应该是(https://github.com/datastax/php-driver/tree/master/features#persistent-sessions),但如果使用 CGI 或不断创建新进程的东西,您仍然会遇到问题。也许试试php-fpm

    【讨论】:

    • 感谢您的回复。我们正在使用持久连接。看来您是对的,因为所有请求实际上都是在验证然后处理请求。我怎么能阻止它?当我为 cassandra 执行 phpinfo() 和 grep 时,我得到了 Cassandra 支持 => 启用 C/C++ 驱动程序版本 => 2.2.2 持久集群 => 0 持久会话 => 0 指令 => 本地值 => 主值 cassandra.log => cassandra.log => cassandra.log cassandra.log_level => ERROR => ERROR 这是否意味着我没有使用持久连接?我们没有使用 php-fpm
    • 很大程度上取决于您的 php 服务器技术栈是什么以及它的设置方式。持久连接只与进程一样长,因此如果每次请求都由一个新进程处理,它就不会持续存在。
    猜你喜欢
    • 2013-09-30
    • 2018-10-30
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多