卡桑德拉磁盘io



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

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

另一种选择可能是在读取调用周围放置两个时间戳,如果它是毫秒的顺序,那么我知道它是磁盘读取。但是我不完全确定系统调用在哪里,我想我在 reBuffer() 方法的 RandomAccessReader 中找到了它(int n = super.read(buffer, read, buffer.length - read);)但是,当我查询列系列时,情况似乎并非如此。

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

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

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

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

1- 表示单个节点磁盘 IOPS

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

#!/bin/bash
 `echo date` 
  printf "tttttttt nodetool info Informationn"
  printf "tttttttt ***********************nn" 
 `echo nodetool info` 

  printf "tttttttt iostat -c Informationn" 
  printf "tttttttt ***********************nn" 
 `echo iostat -c` 
  printf "tttttttt iostat -x -m 60 Informationn" 
  printf "tttttttt *****************************nn" 
 `echo iostat -x -m 60 -d 1`
  printf "tttttttt vmstat -s -S m 60 Informationn" 
  printf "tttttttt *******************************nn"
 `echo vmstat -s -S m 60` 
  printf "tttttttt nodetool cfstats Informationn"
  printf "tttttttt **************************************************n" 
 `echo nodetool cfstats` 
  printf "tttttttt nodetool  tpstatsn" 
  printf "tttttttt *************************************nn" 
 `echo nodetool tpstats` 
  printf "nn" 
  printf "___________________________________________________________________________________________________________________________nn"
  echo 'END'

2- 用于网络 IOPS

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

最新更新