玩转GaussDB(DWS)资源负载管理系列 -- 各种配置参数和语句状态眼花缭乱,配置参数全解,看这一篇就清楚了

举报
Malick 发表于 2021/03/26 21:35:04 2021/03/26
【摘要】 GaussDB(DWS)的负载管理具有众多参数和视图,有时候光弄清楚这些参数和视图的功能和字段就很费劲了,本文用来介绍下资源管理常用的所有的参数和视图说明。以便更好的了解和使用DWS的负载管理功能。 参数说明 通用参数use_workload_manager:资源负载管理总开关,关闭和打开决定是否走资源管理功能。max_active_statements:单个cn所能接受的最大并发数量,即...

GaussDB(DWS)的负载管理具有众多参数和视图,有时候光弄清楚这些参数和视图的功能和字段就很费劲了,本文用来介绍下资源管理常用的所有的参数和视图说明。以便更好的了解和使用DWS的负载管理功能。

参数说明

通用参数

- use_workload_manager:资源负载管理总开关,关闭和打开决定是否走资源管理功能。
- max_active_statements:单个cn所能接受的最大并发数量,即单cn下发的语句,活跃数量最大值,超过该值会进入全局排队状态。

静态负载管理(资源池)

静态负载管理相当于将内存/并发,做资源池或者说是队列上的划分,在cn上进行资源判断,根据语句的cost决定该语句是简单还是复杂,简单作业进行并发管控,复杂作业进行用户对应资源池的资源管控。
术语及参数

 - resource pool : 资源池,可以将多个用户关联到同一个资源池中,处于同一个资源池的用户共享该资源池的资源,包括并发数量。
 - parctl_min_cost : 作为静态负载管理下,界定简单作业和复杂作业的阈值,大于该值为复杂作业,小于该值为简单作业。
 - active_statements:资源池级别复杂作业并发数,即大于上述parctl_min_cost参数的语句最多能并行运行多少个。
 - max_dop:资源池级别简单作业并发数,即小于上述parctl_min_cost参数的语句最多能并行运行多少个。

动态负载管理(ccn总体仲裁管理)

- enable_dynamic_workload: 动态负载管理开关,打开后自动使用内存自适应功能,会由ccn仲裁全局内存情况决定语句是否下发,如果内存不足以支撑sql语句执行,就会进入ccn的队列。
 修改该参数需要重启集群生效。

资源池配置查询

- pg_resource_pool:资源池信息视图,可以直接查看资源池上的配置参数,排队是否正常,可以根据活跃语句数量,和此视图中的信息进行对比。主要是如下字段:
-- respool_name:资源池名称。
-- mem_percent:资源池内存配置的百分比。
-- control_group:资源池对应的cgroup。
-- active_statements:资源池上最大的复杂作业并发数。
-- max_dop:资源池上简单作业最大并发数。

磁盘管控参数

- enable_perm_space : 磁盘空间管控总开关,关闭该参数也可以关闭7天一次的总体统计线程。
- select gs_wlm_readjust_user_space(0); 
  该函数在用户磁盘空间统计不准确时候可以主动调用作为矫正。
  由于用户的磁盘空间使用是维护在内存中的一个数据结构,实际物理文件变动的场景特别多,例如有文件直接被异常rm掉,数据库内核是不会统计此类情况的,因此可能会出现内存与实际有差异的情况,此时可以通过该函数进行一个矫正操作。
  规格:8.0以下,该函数只能重新矫正连接的库,执行效率较低;8.0及以上将该函数进行了性能优化。并且会直接矫正全部库的磁盘使用情况。
- 实际每个用户的空间上限配置情况,可以查看系统表pg_user/pg_roles,tempspacelimit/spillspacelimit/spacelimit查看。分别对应临时表、算子落盘、永久表空间大小。

资源监控参数

TOPSQL参数

- enable_resource_track :设置是否开启资源实时监控功能。此参数需在CNDN同时应用。
- enable_resource_record :设置是否开启资源监控记录归档功能。开启时,对于history视图(GS_WLM_SESSION_HISTORYGS_WLM_OPERATOR_HISTORY)中的记录,每隔3分钟会分别被归档到相应的info视图(GS_WLM_SESSION_INFOGS_WLM_OPERATOR_INFO),归档后history视图中的记录会被清除。此参数需在CNDN同时应用。
- resource_track_level :设置当前会话的资源监控的等级,建议使用query级别。
- resource_track_cost :设置对当前会话的语句进行资源监控的最小执行代价。该参数只有当参数enable_resource_track为on时才有效。
- resource_track_duration:设置资源监控实时视图(实时topsql)中记录的语句执行结束后进行历史信息转存的最小执行时间。当执行完成的作业,其执行时间不小于此参数值时,作业信息会从实时视图(以statistics为后缀的视图)转存到相应的历史视图(以history为后缀的视图)中。该参数只有当enable_resource_track为on时才有效。
- topsql_retention_time:gs_wlm_session_invo的老化时间,配置以后可以保留配置的时间的数据,其余会每10min发起一次delete进行清理。

内存相关参数

- disable_memory_protect : 禁止内存保护功能。当系统内存不足时如果需要查询系统视图,可以先将此参数置为on,禁止内存保护功能,保证视图可以正常查询。该参数只适用于在系统内存不足时进行系统诊断和调试,正常运行时请保持该参数配置为off。
  该参数定位问题时很有用处。防止memory temprilary unaviliavle。

- max_process_memory : 进程最大使用内存,其中,以此值去除掉行列存扫描等配置的值之后,剩余量作为max_dynamic_memory用于用户SQL计算等行为(租户的内存分配也是基于max_dynamic_memory)。

视图说明

- pg_stat_activity/pgxc_stat_activity:
  说明所有连到cn上的语句或者说连接的状态,重要字段解释如下:
   - state:当前语句的状态,几种state解释如下:
      - idle – 空闲连接
      - active – 活跃连接,有语句执行或者排队
      - idle in transaction – 事务未提交
      - enqueue:当前语句的排队状态,几个排队状态解释如下
      - waiting in global queue :表示语句在全局排队中。(活跃语句超过max_active_statements)
      - waiting in respool queue :表示语句在资源池排队中。(达到上述静态负载中复杂作业或者简单作业并发上限)
      - waiting in ccn queue:表示作业在CCN排队中。动态自适应功能判断内存不足以执行新sql。
  • pg_session_wlmstat:
    各种作业正在运行时的负载管理相关信息,重要字段解释如下:
   - priority : 语句所在的cgroup优先级
   - attribute : 语句属性,用于判断语句是简单或者复杂作业等,几种类型介绍如下:
      - Ordinary : 语句刚发送到数据库,默认为此类型。
      - Simple :简单语句。(会受资源池级别并发控制,全局并发控制)
      - Complicated : 复杂语句。(受资源池级别资源控制,全局并发控制)
      - Internal : 数据库内部语句。(不受管控,耗费资源很少)
   - enqueue : 语句详细排队状态,重要字段解释如下:
      - Global::在全局队列中排队。
      - Respool:在资源池队列中排队。
      - CentralQueue:在中心协调节点(CCN)中排队。
      - Transaction:语句处于一个事务块中。
      - StoredProc : 语句处于一个存储过程中。
      - None:未在排队。
      - Forced None : 事务块语句或存储过程语句由于超出设定的等待时间而强制执行。
  • pg_thread_wait_status:
    通过PG_THREAD_WAIT_STATUS视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。
    PS:此视图中的lwtid字段可以关联上述pg_session_wlmstat中的processid以定位到一个语句的线程处于什么状态。可是使用query_id关联到pg_thread_wait_status.

SQL监控视图

  • 历史topsql:gs/pgxc_wlm_session_info

  • 实时topsql:gs_wlm_session_statistics

用户资源监控功能

  • pg_total_user_resource_info
  • GS_WLM_USER_RESOURCE_HISTORY

实例级别资源监控功能

监控CN、DN实例资源使用状态(包括内存,CPU,磁盘IO,进程物理IO和进程逻辑IO)的系统表

  • pgxc_get_wlm_current_instance_info(‘ALL’);
  • GS_WLM_INSTANCE_HISTORY

内存相关视图

  • pv_total_memory_detail/pgxc_total_memory_detail:

  • pv_session_memory_detail:

资源池上的异常规则查询

  • 通过gs_respool_exception_info(‘rp_name’)查看异常规则;
  • 通过 gs_cgroup -p,也可以查看对应控制组上的异常规则;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。