我正在试图弄清楚我如何确定我的应用程序正在驱动的IOPS,以便我可以调整我们的云基础架构组件的大小。我理解数据库和存储层之间的IOPS,但我想了解如何计算应用程序驱动的内容。以下是我的一些应用程序特征: 1)90%写入和10%读取 2)我们有一个基于Java的应用程序,最终插入到HBase数据库中 3)处理大约50 msg / sec,其中每条消息可能导致2个HBase插入
以下是我不确定的事情: 1)计算IOPS的唯一方法是在加载期间运行iostat或实际服务器上的某些东西吗? 2)是否有一般的方法可以计算进入的数据量/大小所需的数据而不是实际的存储单元? 3)与事务的数量和每个事务中的字节数有任何关系(我在某处读取IO通常为3K,大多数插入不包含那么多信息,因此无关紧要。)
非常感谢任何帮助。
答案 0 :(得分:0)
对Hbase不太熟悉。但是从文档中,它使用了日志结构,这意味着写入将是顺序写入。它还具有压缩,这将导致多MB的顺序读取和写入。读取查询将导致存储层上的随机读取。 以下是您的问题的答案:
据我所知,是的。获得IOPS的唯一方法是运行iostat。您可以从应用程序级别获取一些压缩统计信息。但很难提取IOPS级别的详细信息。
压缩将导致比整个数据大小更多的存储空间。如果您的应用程序写得很重(压缩可能无法赶上插入的速度),实际数据量的大小将会大得多。鉴于您的问题为50 msg / sec,情况应该不是这样。我将磁盘配置为每个实例的预期数据量的两倍。
如上所述,Hbase是日志结构。写入在内存中累积并一起刷新到磁盘。因此,每笔交易的大小无关紧要。