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类似如下:
适用于
- 安装部署了SAP HANA 2.0 SPS04及以上版本的ECS实例。
影响和限制
- SAP HANA需要将机器的计数器设置为TSC(时间戳计数器),否则可能会出现显着的性能下降。请参考2753418 - Potential Performance Degradation Due to Timer Fallback
- 您必须重新启动SAP HANA实例才能使更改生效,因为SAP HANA只有在启动时才会检查计时器。
- 变更前强烈建议做好备份,您可以参考单块云盘快照或者多个云盘快照。如果您已经购买了HBR产品服务,可以使用创建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高可用环境为例描述操作流程:- 在任意节点上执行以下命令,将集群设置为维护模式。
说明:单机环境请直接跳至步骤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
- 执行以下命令,停止集群服务。
systemctl stop pacemaker
- 按顺序停止SAP应用和数据库服务。
- 登录集群中的一个节点,执行以下命令,确认当前时钟源。
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock说明:如果当前时钟源已经是tsc,说明时钟源设置已经符合SAP的要求,您无需继续下面的操作。
- 依次执行以下命令,确认可用的时钟源,且包含tsc。
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc acpi_pm - 执行以下命令,将当前时钟源设置为tsc。
sudo bash -c 'echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource'
- 运行demsg查看内核日志。
dmesg | less
- 设置成功则会显示此消息。
clocksource: Switched to clocksource tsc
注意:如果ECS重启,Linux 内核会重置时钟源。
- 执行以下命令,配置系统自启动设置时钟源为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
- 登录阿里云ECS控制台,重启ECS。
- 重复步骤2~10,完成集群中另一个节点的操作。
- 在任意节点上,执行以下命令,关闭集群维护模式。
crm configure property maintenance-mode=false
- 执行以下命令,验证集群服务。
crm_mon -r
系统显示类似如下。
说明:如果在步骤1手动设置过某个资源的maintenance状态为on,这里也需要手动将此资源的maintenance状态设置回off,命令语法如下:
crm resource maintenance <resource name> false
相关文档
文档内容是否对您有帮助?