HANA Alert “Alert Timer fallback”

更新时间:

问题描述

您在SAP HANA studio或者HANA trace文件中看到有“HANA timer uses fallback to system timer"的alerts,并且你的SAP HANA的版本是2.0 SPS04及以上。
 
SAP HANA studio中alert类似如下:
hana_alert.png

适用于

  • 安装部署了SAP HANA 2.0 SPS04及以上版本的ECS实例。

影响和限制

解决方案

从SAP HANA 2.0 SPS04开始,会检查CPU是否支持RDTSCP指令,以及是否设置了constant_tsc和nonstop_tsc。在Intel平台上,系统时钟源会检查/sys/devices/system/clocksource/clocksource0/current_clocksource/sys/devices/system/clocksource/clocksource0/available_clocksource的配置。其中current_clocksource必须设置为tsc,available_clocksource需要包含tsc。以下以SAP HANA 2.0 SPS04高可用环境为例描述操作流程:
  1. 在任意节点上执行以下命令,将集群设置为维护模式。
    说明:单机环境请直接跳至步骤2。
    crm configure property maintenance-mode=true
    设置成功后,执行以下命令,确认所有资源都是unmanaged状态。
    crm_mon -r
    系统显示类似如下。
    说明:如果还有没被unmanaged的资源,需要手工将其设置成unmanaged,命令语法如下:
    crm resource maintenance <resource name> true
    例如,手工设置图中HANA HDB的资源的命令如下:
    crm resource maintenance rsc_SAPHana_HDB true
  2. 执行以下命令,停止集群服务。
    systemctl stop pacemaker
  3. 按顺序停止SAP应用和数据库服务。
  4. 登录集群中的一个节点,执行以下命令,确认当前时钟源。
    cat /sys/devices/system/clocksource/clocksource0/current_clocksource
    kvm-clock
    说明:如果当前时钟源已经是tsc,说明时钟源设置已经符合SAP的要求,您无需继续下面的操作。
  5. 依次执行以下命令,确认可用的时钟源,且包含tsc。
    cat /sys/devices/system/clocksource/clocksource0/available_clocksource
    kvm-clock tsc acpi_pm
  6. 执行以下命令,将当前时钟源设置为tsc。
    sudo bash -c 'echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource'
  7. 运行demsg查看内核日志。
    dmesg | less
  8. 设置成功则会显示此消息。
    clocksource: Switched to clocksource tsc
    注意:如果ECS重启,Linux 内核会重置时钟源。
  9. 执行以下命令,配置系统自启动设置时钟源为tsc。
    vim /etc/default/grub
    并为GRUB_CMDLINE_LINUX选项添加clocksource=tsc tsc=reliable。
    GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200 clocksource=tsc tsc=reliable"
    生成grub.cfg文件。
    grub2-mkconfig -o /boot/grub2/grub.cfg
  10. 登录阿里云ECS控制台,重启ECS。
  11. 重复步骤2~10,完成集群中另一个节点的操作。
  12. 在任意节点上,执行以下命令,关闭集群维护模式。
    crm configure property maintenance-mode=false
  13. 执行以下命令,验证集群服务。
    crm_mon -r
    系统显示类似如下。
    说明:如果在步骤1手动设置过某个资源的maintenance状态为on,这里也需要手动将此资源的maintenance状态设置回off,命令语法如下:
    crm resource maintenance <resource name> false

相关文档