如何计算我的应用程序iops利用率

问题描述:

我想知道如何确定我的应用程序正在驱动的IOPS,以便我可以对我们的云基础架构组件进行属性大小调整。我理解数据库和存储层之间IOPS是什么,但我想了解我如何计算我的应用程序驱动器。这里是我的一些应用程序特性: 1)写入90%,读取10% 2)我们有一个基于java的应用程序,最终插入HBase数据库 3)处理大约50 msg/sec,其中每个消息可能导致2 HBase插入如何计算我的应用程序iops利用率

以下是我不确定的: 1)计算IOPS的唯一方法是在加载期间在实际服务器上运行iostat或其他东西? 2)有没有一种通用的方法可以计算出来的数据量和大小,而不是实际的存储单元? 3)与每个事务中的事务数和字节数是否有任何关系(我在某处读取IO通常是3K,大多数插入不包含那么多的信息,因此无关紧要)。

任何帮助将不胜感激。

不是很熟悉Hbase。但是从文档来看,它使用日志结构,这意味着写入将是顺序写入。它也有压缩,这将导致多MB的连续读取和写入。读取查询将导致存储层上的随机读取。 因此,这里是回答您的问题:

  1. 据我所知,是的。获得IOPS的唯一方法是运行iostat。您可以从应用程序级别获取一些压缩统计数据。但很难提取IOPS级别的详细信息。

  2. 压缩会导致比整个数据大小更多的存储空间。如果您的应用程序写入很重(压缩可能无法跟上插入的速度),实际数据量的大小将会更大。鉴于您的问题中有50 msg /秒,这不应该是这样。我将配置磁盘的数量是每个实例的预期数据量的两倍。

  3. 如上所述,Hbase是日志结构化的。写入在内存中累积并一起刷新到磁盘。所以每笔交易的规模都没有关系。