You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python连接器获取Datastax Cassandra单查询的CPU时间、内存时间及CPU使用率?

如何通过DataStax Python连接器获取Cassandra查询的CPU/内存指标

DataStax Python连接器本身不直接提供查询级别的CPU时间、内存占用这类细粒度指标,因为这类数据属于Cassandra节点的系统执行层面统计,连接器核心负责请求通信与结果返回。但可以通过以下两种途径获取相关信息:

方式一:利用Cassandra内置机制收集服务端执行数据

Cassandra自带系统表与查询跟踪功能,可间接获取查询执行的相关统计:

  • 查询系统表:通过system_schema.queries表能获取查询的执行次数、总延迟等基础数据,但无直接CPU/内存时间;system.local或system.peers的关联表可提供节点级统计,需自行关联到具体查询。
  • 开启查询跟踪:能记录查询执行全流程的阶段细节,可从中提取执行耗时等线索:
    from cassandra.cluster import Cluster
    
    cluster = Cluster(['your-node-ip'])
    session = cluster.connect('your_keyspace')
    
    # 执行查询并开启跟踪
    with session.execute_async("SELECT * FROM your_table WHERE id = 1", trace=True) as future:
        result = future.result()
        trace = future.get_query_trace()
        # 遍历跟踪事件,查看执行阶段信息
        for event in trace.events:
            print(f"{event.source}: {event.description} | 时间戳: {event.timestamp}")
    
    注意:跟踪信息不会直接给出CPU/内存精确数值,但能反映查询在服务端各节点的执行耗时分布。

方式二:通过Python工具统计客户端资源消耗

如果需要监控Python进程执行查询时的本地资源占用,可以用psutil库实现:

  1. 安装依赖:pip install psutil
  2. 示例代码:
    import psutil
    from cassandra.cluster import Cluster
    import time
    
    def get_process_metrics():
        process = psutil.Process()
        return {
            'cpu_percent': process.cpu_percent(interval=None),
            'memory_rss': process.memory_info().rss  # 常驻内存,单位字节
        }
    
    cluster = Cluster(['your-node-ip'])
    session = cluster.connect('your_keyspace')
    
    # 记录执行前状态
    pre_metrics = get_process_metrics()
    start = time.time()
    
    # 执行目标查询
    session.execute("SELECT * FROM your_table WHERE id = 1")
    
    # 记录执行后状态并计算差值
    end = time.time()
    post_metrics = get_process_metrics()
    
    cpu_time = (post_metrics['cpu_percent'] / 100) * (end - start)
    memory_diff = post_metrics['memory_rss'] - pre_metrics['memory_rss']
    
    print(f"查询CPU时间: {cpu_time:.2f} 秒")
    print(f"查询内存变化: {memory_diff / (1024*1024):.2f} MB")
    print(f"查询期间CPU使用率: {post_metrics['cpu_percent']} %")
    
    注意:此方法统计的是客户端Python进程的资源消耗,而非Cassandra服务端执行查询的资源占用。

补充说明

若需要服务端精确的查询级CPU/内存指标,Cassandra本身未直接暴露这类细粒度数据,可尝试:

  • 启用Cassandra的JMX监控,获取节点级CPU、内存指标,再结合查询执行时间窗口做关联分析。
  • 使用第三方监控工具(如Prometheus + Grafana)配合Cassandra Exporter收集节点资源数据,再结合查询日志映射到具体查询。

内容的提问来源于stack exchange,提问作者Lucas Emanuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:49:56