系统监控和维护

本节介绍日常运维相关的最佳实践,关注这些内容可以确保Greenplum数据库日常高可用性和性能保持 最佳状态。

Parent topic: Greenplum数据库最佳实践

监控

Greenplum数据库提供了一些对监控系统非常有用的工具。

gp_toolkit模式包含多个可以用SQL命令访问的视图,通过它们可以查询系统目录、日志 文件以及操作环境来获得系统状态信息。

gp_stats_missing视图展示没有统计信息且要求运行ANALYZE的表。

更多gpstate和gpcheckperf工具的信息请参考Greenplum数据库工具指南。 有关gp_toolkit模式的信息,请见Greenplum数据库参考指南

gpstate

gpstate工具显示Greenplum系统的状态,包括哪些segment宕掉了、saster和segment 的配置信息(hosts、数据目录等)、系统使用的端口以及主segment与它们对应的镜像segment之间的映射。

运行gpstate -Q可以得到一个segment的列表,这个列表列出了那些在master的系统目录 中被标记为”down”的segment。

要得到Greenplum系统的详细状态信息,可运行gpstate -s。

gpcheckperf

gpcheckperf工具能用来测试主机硬件的基线性能。其结果可以帮助发现硬件问题。它会 执行下列检查:

  • 磁盘I/O测试 – 通过使用操作系统命令dd读写一个大型文件来测量I/O性能。 它报告以兆字节每秒为单位的读写速率。
  • 内存带宽测试 – 使用STREAM基准测量以兆字节每秒为单位的可持续的内存带宽。
  • 网络性能测试 – 运行gpnetbench网络基准程序(也可以选netperf) 来测试网络性能。这种测试可以运行在三种模式中:并行结对测试(-r N)、 串行结对测试(-r n)或者全矩阵测试(-r M)。报告 的最小、最大、平均和中值传输率将以兆字节每秒为单位。

为了从gpcheckperf获得有效的数字,数据库系统必须被停止。即使系统仍在 运行且没有运行查询活动,从gpcheckperf得到的数字可能也不准确。

gpcheckperf要求在参与性能测试的主机之间提前进行访问互信设置。因为工具会调用 gpssh以及gpscp,因此这些工具必须也位于用户的PATH 中。可以个别指定要检查的主机(-h host1 -h host2 …)或者使用 -f hosts_file,其中hosts_file是一个包含要 检查的主机列表的文本文件。如果用户有多个子网,为每个子网都创建一个单独的主机文件,这样用户可以单独测试 子网。

gpcheckperf默认会运行磁盘I/O测试、内存测试和串行结对网络性能测试。对于磁盘I/O 测试,用户必须使用-d选项指定要测试的文件系统。下面的命令在subnet_1_hosts 文件中列出的主机上测试磁盘I/O和内存带宽:

  1. $ gpcheckperf -f subnet_1_hosts -d /data1 -d /data2 -r ds

-r选项选择要运行的测试:磁盘I/O(d)、内存带宽(s)、 网络并行结对(N)、网络串行结对测试(n)、网络全矩阵测试(M)。 每次执行只能选择一种网络模式。详细的gpcheckperf参考信息请见Greenplum数据库 参考指南

用操作系统工具监控

下面的Linux/UNIX工具可以被用来评估主机性能:

  • iostat 允许用户监控segment主机上的磁盘活动。
  • top 显示操作系统进程的动态视图。
  • vmstat 显示内存使用统计信息。

用户可以使用gpssh在多台主机上运行相关工具。

最佳实践

  • 实现Greenplum数据库管理员指南中的“推荐的监控和维护任务”。
  • 在安装时运行gpcheckperf,并且在安装之后定期运行它,将其输出保存起来以对比 不同时刻的系统性能。
  • 使用所有能支配的工具来理解系统在不同负载下的行为。
  • 检查异常事件以确定原因。
  • 通过定期运行执行计划监控系统上的查询活动,以确保查询以最优的方式运行。
  • 检查执行计划以确定索引是否被使用以及分区裁剪是否按照预期发生。

附加信息

  • gpcheckperf详细信息请见Greenplum数据库工具指南
  • “推荐的监控和日常运维任务”部分详情请柬Greenplum数据库管理员指南
  • Sustainable Memory Bandwidth in Current High Performance Computers. John D. McCalpin. Oct 12, 1995.
  • 请参考www.netperf.org来使用netperf, netperf必须被安装在所有测试 机器上。更多有关gpcheckperf的信息请移步命令详细出处。