第 27章 调查性能问题

来源:互联网 发布:js时间戳转换成时分秒 编辑:程序博客网 时间:2024/06/06 14:28

第 27章 调查性能问题

本节提供了Greenplum数据系统识别和排除性能问题的指导方针。

本主题列出您可以采取以帮助确定性能问题的原因步骤。如果问题影响一个特定的工作负载或查询,你可以专注于调整特定的工作负载。如果性能问题是全系统的,那么硬件问题,系统故障或资源争用可能是原因。

检查系统状态

使用gpstate实用程序来确定发生故障的部分。一个Greenplum数据引擎系统会产生性能下降段实例下来,因为其他主机必须承担失败段的处理任务。

失败段可以表示硬件故障,如发生故障的磁盘驱动器或网卡。 Greenplum的数据库提供了硬件验证工具gpcheckperf,以帮助识别硬件问题的段上的主机。

检查数据库的活动

•               活动会话检查(工作量)

•               锁检查(争)

•               检查查询状态和系统利用率

检查活动会话(工作负载)

pg_stat_activity系统目录视图显示每个服务器进程一行。it shows thedatabase OID, database name, process ID, user OID, user name, current query,time at which the current query began execution, time at which the process wasstarted, client address, and port number. To obtain the most information about thecurrent system workload, query this view as the database superuser. 例如:

SELECT * FROMpg_stat_activity;

Note theinformation does not update instantaneously.

检查锁(争)

通过pg_locks系统目录视图,您可以看到锁的信息。如果事务持有对象上的锁,任何其他查询必须等待锁被释放才可以继续。如果查询是挂起则用户就可以看到。

检查未批准锁pg_locks对帮助识别数据库客户端会话之间的争用。 pg_locks提供了一个所有的锁的全局视图,在数据库系统中,不仅是有关当前数据库。您可以对pg_class.oid加入其列的关系来识别被锁住的关系(如表),但这种正常工作只对当前数据库的关系。你可以加入PID列到pg_stat_activity.procpid看到有关该会话持有或等待持有锁的更多信息。例如:

SELECTlocktype, database, c.relname, l.relation, l.transactionid, l.transaction,l.pid, l.mode, l.granted,a.current_query

FROM pg_locksl, pg_class c, pg_stat_activity a WHERE l.relation=c.oid AND l.pid=a.procpidORDER BY c.relname;

如果你使用的资源队列进行工作负载管理,正在等待队列中的查询也将显示pg_locks对。看看有多少查询等待着从资源的队列中运行,使用gp_resqueue_status系统目录视图。例如:

SELECT * FROM gp_toolkit.gp_resqueue_status;

检查查询状态和系统利用率

您可以使用系统监控实用程序 ps, top,iostat, vmstat, netstat等来监控数据库阵列中的数据库的活动 。这些工具可以帮助识别的Greenplum数据库进程(Postgres处理)当前在系统上运行和资源最密集的任务,关于CPU,内存,磁盘I / O或网络活动。看看这些系统的统计数据,以确定由系统过载和消耗过多的资源,降低数据库性能的查询。 Greenplum的数据库的管理工具gpssh允许您在多个主机上同时运行这些系统的监控命令。

您可以创建并使用Greenplum 数据库的session_level_memory_consumption视图,提供Greenplum数据引擎当前运行查询会话的内存使用率的信息。有关视图的信息,请参阅查看会话内存使用信息。

该Greenplum的指挥中心收集查询和系统利用率指标。看到Greenplum的指挥中心管理员指南程序,使Greenplum的指挥中心。

故障排除故障查询

如果查询表现不佳,看它的查询计划,以帮助确定问题。 EXPLAIN命令显示给定查询的查询计划。见仿形查询有关阅读查询计划,并确定问题的详细信息。

当内存不足事件的查询执行过程中发生,每个查询的Greenplum数据存储核算框架报告中详述的内存消耗运行在事件发生的时间。的信息被写入到Greenplum数据段的日志。

调查错误信息

Greenplum的数据库日志消息被写入文件,在主人的或段的数据目录中的pg_log目录。因为主日志文件中包含的信息最多,请务必先检查一下。日志文件每天滚动和使用的命名约定:gpdb-YYYY-MM-DD_hhmmss.csv。要查找主服务器主机上的日志文件:

timestamp | user | database |statement_id | con#cmd#

|:-LOG_LEVEL:log_message

您可能要集中你的警告,错误,致命性或崩溃日志级别信息的搜索。您可以使用Greenplum的实用gplogfilter通过Greenplum的数据库日志文件进行搜索。例如,当您运行主服务器主机上运行以下命令,它会检查标准日志位置问题日志消息:

$gplogfilter-t

要搜索有关的日志条目在段日志文件,可以使用gpssh网段主机上运行gpiogfilter。您可以通过statement_id或CON#(会话标识符)确定相应的日志条目。例如,要搜索中包含字符串CON6段日志文件,日志信息,并保存输出到一个文件:

gpssh -f seg_hosts_file -e 'source

/usr/local/greenplum-db/greenplum_path.sh; gpiogfilter -f con6 /gpdata/*/pg_log/gpdb*.csv' > seglog.out

收集信息以便 PivotalSupport

在Greenplum数据gpsupport实用程序可以收集从Greenplum数据系统的信息。然后,可以将信息文件发送到Pivotal客户支持,以帮助Greenplum数据错误或系统故障的诊断。例如,该gpsupport命令收集来自于Greenplum的数据库集群所列段上的主机的所有日志:

$ gpsupport collect logs segs sdw1,sdw2,sdw3-1

该gpsupport实用程序还可以收集其他信息,比如核心文件,以前运行的查询和数据库架构的信息。

The gpsupportutility is available from PivotalNetwork and thedocumentation is available from the PivotalDocumentationsite.