【问题标题】:Cassandra disk ioCassandra 磁盘 io
【发布时间】:2013-11-21 09:20:12
【问题描述】:

嘿,想知道是否有人可以帮助我,我正在了解 cassandra,但我很好奇,想测量当我从列族读取时发生了多少磁盘 I/O。

我查看了 opscentre 分析器,但我能找到的唯一指标是磁盘利用率,但据我了解,这是 CPU 花费在磁盘 I/O 上的时间,所以我猜测它的测量内容,如上下文切换时间。然而,既然它这样做了,我想也许一定有一点,当 cassandra 意识到它确实必须进入磁盘时,我可以在那里放一个计数器。

另一个选项可以在读取调用周围放置两个时间戳,如果它是毫秒级的,那么我知道它是磁盘读取。但是我不完全确定系统调用在哪里,我认为我将它定位在 RandomAccessReader 的 reBuffer() 方法中(int n = super.read(buffer, read, buffer.length - read);)但是它没有当我查询列族时似乎不是这样。

简而言之,关于如何计算正在发生的磁盘 I/O 数量的任何想法?

【问题讨论】:

    标签: io cassandra disk


    【解决方案1】:

    iostat -m 1 -x 为您的磁盘打印出各种统计数据,包括每秒读取操作的数量。如果您有 Cassandra 的专用磁盘,这将告诉您读取 I/O 的总数,但这包括压缩。如果没有运行压缩,那么它将仅测量您的读取操作。

    很难通过测量系统调用来获得实际磁盘 I/O 的数量,因为即使 Cassandra 发出读取系统调用,它也可能是从文件系统缓存中读取的,而不是实际接触磁盘。

    在更糟糕的情况下,Cassandra 将为每次读取执行 2 个 I/O。一个是查找偏移量(如果 keycache 中没有偏移量并且索引文件不在缓存中),另一个是从 SSTable 中检索数据(如果 SSTable 不在缓存中)。

    【讨论】:

    • 非常感谢您的回复。我会按照你的建议尝试使用 iostat。
    【解决方案2】:

    1- 用于单个节点磁盘 IOP

    将以下脚本放入 .sh 文件并安排其运行:

    #!/bin/bash
    
     `echo date` 
      printf "\t\t\t\t\t\t\t\t nodetool info Information\n"
      printf "\t\t\t\t\t\t\t\t ***********************\n\n" 
     `echo nodetool info` 
    
    
      printf "\t\t\t\t\t\t\t\t iostat -c Information\n" 
      printf "\t\t\t\t\t\t\t\t ***********************\n\n" 
     `echo iostat -c` 
    
      printf "\t\t\t\t\t\t\t\t iostat -x -m 60 Information\n" 
      printf "\t\t\t\t\t\t\t\t *****************************\n\n" 
     `echo iostat -x -m 60 -d 1`
    
      printf "\t\t\t\t\t\t\t\t vmstat -s -S m 60 Information\n" 
      printf "\t\t\t\t\t\t\t\t *******************************\n\n"
     `echo vmstat -s -S m 60` 
    
      printf "\t\t\t\t\t\t\t\t nodetool cfstats Information\n"
      printf "\t\t\t\t\t\t\t\t **************************************************\n" 
     `echo nodetool cfstats` 
    
      printf "\t\t\t\t\t\t\t\t nodetool  tpstats\n" 
      printf "\t\t\t\t\t\t\t\t *************************************\n\n" 
     `echo nodetool tpstats` 
      printf "\n\n" 
      printf "___________________________________________________________________________________________________________________________\n\n"
      echo 'END'
    

    2- 用于网络 IOP

    安装 Ganglia,它有一些漂亮的图表并有实时监控

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2018-11-01
      • 2016-12-20
      • 2011-09-06
      相关资源
      最近更新 更多