我在一台 Windows 服务器上运行一个数据库,并用 Hyperic 进行监控。随着我们接近峰值负载,我发现每分钟的写入次数在一天内不断增加。随着我们向系统添加更多用户,峰值会随着时间的推移逐渐增加。使用其他资源(即 CPU、内存或磁盘空间),很容易看到最大值是多少,并确保在资源用完之前准备好额外的资源。是否可以粗略预测每分钟的最大写入次数可能是多少?或者,我是否只需要增加磁盘写入次数并查看何时开始出现故障,我认为我的磁盘队列将是我超出驱动器/阵列能力的最佳指标。
==编辑==
再补充一些细节,我正在运行 SQL Server 2005,我之所以对写入如此感兴趣,是因为磁盘上的写入目前比读取多出约 30 倍。我假设写入很可能在任何其他磁盘活动之前成为瓶颈。它支持的应用程序主要是 OLTP,尽管我们也从其中的数据进行报告。
答案1
简短回答: 预测 - 否,基准 - 是。
长答案: 我认为这不会对您想要实现的目标有所帮助,我相信这是针对您的数据库服务器正在运行的磁盘进行一些容量规划。
服务器运行的是哪种 RMDBS?数据库运行的是哪种应用程序?OLTP、决策支持、DW/Reporting?不同的应用程序和应用程序组将具有不同的磁盘负载配置文件,仅预测/测量写入性能很可能完全没有意义。
作为 SQL Server 用户,磁盘子系统对我来说很重要。为了进行基准测试,我使用SQL输入输出在比较磁盘子系统/磁盘配置时测试读/写性能。SQLIO 是一个独立的可执行文件,您可以使用它以不同的方式测试读/写,SQLIO 图形界面也有帮助。您可以使用此工具来确定“最大写入次数”。
一般来说,您不应该依赖单个计数器来指示 I/O 瓶颈。以下是我寻找的指示服务器需要更多主轴的指标:
• PhysicalDisk 对象:平均磁盘队列长度/磁盘数量: 当服务器负载过大时,如果值持续高于 2,则表示存在瓶颈
• 物理磁盘:%磁盘时间超过 60% 就是严重的瓶颈
• 平均磁盘秒/读取和平均磁盘秒/写入:
- 10ms 之间
- 10 和 20ms - 可以
- 20 至 50 毫秒之间 - 不好
- 50ms——糟糕