防止HANA负载过高-工作负载类缺少功能

2020-08-23 09:52发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)主要由于Fiori利用CDS视图...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


主要由于Fiori利用CDS视图进行的大量开发,我们在HANA中遇到了负载问题。

通常,系统具有大量可用的CPU和内存,但是有时(每天2-3次)用户将提交复杂的选择标准,从而消耗大量资源; 当他们没有迅速得到答复时,有时会重复重复提交具有相同(或非常相似)查询的搜索。 结合SADL框架并行提交许多查询,这意味着一个用户可以提交40多个高资源查询,并影响系统稳定性,而一个用户几乎消耗所有数据库资源。

理想情况下,我们将有一些参数(或工作负载类)会限制单次使用可以占用的资源。 但是我在当前设计中可以想到的唯一解决方案将意味着每个用户需要一个工作负载类。 但是,即使我们这样做,也无法解决多个并行提交高查询的用户。

为缓解此问题,我们提供了一个巡逻脚本来识别高数据库负载的情况,然后识别并杀死控制数据库的用户的连接。

有人在使用HANA中控制高负载的更标准方法吗?

预先感谢; 斯图尔特

6条回答
昵称总是被占用
2020-08-23 10:20

您已经发现,工作负载管理是一个复杂的主题,因为您要处理动态情况以及目标冲突:

您想同时为每个语句提供最佳性能 避免系统因过多的请求而过载(这里有10个用户单击"狂野"并运行100个类似的查询,或者1000个只希望完成一个查询的用户,这并不重要)。

SPS 04 HANA提供了整套不同的功能,旨在解决问题的不同方面:

  • CPU(在系统级运行于共享硬件上时,在OS级使用)
  • < li> CPU线程池(用于管理HANA内部每个查询的最大CPU使用率)
  • 内存限制(用于OS级使用率和每个语句允许的数量)
  • 准入 控制(以处理允许的并行会话数)

工作负载类和映射有助于对这些限制进行分组并将其分配给各个用户。 不必为每个用户创建单独的工作负载类,但是每个用户将具有一个映射。 这些映射可以过滤用户名,应用程序名称,应用程序组件等内容-如果应用程序提供了该信息(如许多SAP产品所做的那样)。

这样,就不那么困难了。 可以为BI用户或FIORI用户创建映射。

这些措施均不能直接解决您对超级点击用户的关注,因为HANA不会计算并检查是否存在来自同一用户的查询 同一用户已经在运行或尚未运行。 而且,实际上,这种工作量也可能有正当的理由(定期更新仪表板吗?)。

因此,您可以做的是 设置TOTAL STATEMENT THREAD LIMIT,以便其他工作负荷类仍然可以运行。

是否会降低每个用户的最大性能? 当然可以。 但是,即使一种HANA使用者正在"狂野"运行,它也允许其他工作负载类运行。

如Mike所述,其他减少常规高资源查询影响的措施是:

  • 良好的查询/数据模型设计
  • 理解
  • 利用诸如缓存视图和预先计算(取决于您的数据情况)之类的东西来回答的问题

尤其是最后一点可以 变得有争议,因为毕竟这是HANA,不需要进行任何预先计算。
实际上,在某些情况下,某些复杂的查询所需的时间比所需的时间长(例如,交互式显示平均需要10秒,而最多需要5(在案例中为95%)秒,则数据实际上不会更改 这么快。 考虑一下全球销售或库存KPI,其中数据提要大约每半天发送一次。
对于这种情况,缓存视图或预先计算的结果可能是一个很好的解决方案。
与往常一样,YMMV和"取决于"。

我希望能对您有所帮助。

干杯

Lars

一周热门 更多>