开发者社区> 问答> 正文

【推荐】ECS Windows 时间跳变的处理

Windows服务器运行一段时间后,时间发生跳变,出现变快或者变慢的情况,影响应用程序运行。从系统日志可以发现,每隔5分钟就会有系统更正时间的日志(事件ID 1), 日志截图如下:

展开
收起
开发者说 2019-07-11 10:23:23 1201 0
1 条回答
写回答
取消 提交回答
  • 注:注册表修改需要对 Windows 操作系统有一定了解,为了避免注册表误操作带来的操作系统问题或者可能的数据丢失,请您采用如下方式操作注册表前,务必对系统盘和数据盘创建快照以避免可能的数据丢失。

    可能原因

    服务器发生时间跳变的原因有如下可能

    • 由于网络原因,服务器长时间没能和NTP server进行时间同步,导致有偏差。虚拟机在这种情况下容易出现偏差。偏差的积累会导致时间上有大的跳变。
    • 错误的配置了NTP服务器。
    • 服务器的系统时间被其他应用或者进程篡改。这个我们可以检查当前服务器上有没有配置计划任务,或者第三方应用有自动进行时间同步的功能。

    最佳实践

    为了帮助您快速解决问题,在采用如下排查方案前,您可以采用最佳实践来配置服务器。

    • 请参考知识点 ECS Windows默认NTP服务器设置说明 ,配置正确的时间服务器,并保证到时间服务器的UDP 123端口的连通性正常。
    • 请检查是否安装可疑的三方软件,以及是否有配置计划任务,这可能会影响篡改。请停用可疑的三方软件,删除可疑的计划任务。

    排查方案

    为了发现为何出现时间跳变,我们可以相应的开启Windows的审核与时间服务日志进行排查。

    • 开启审计帮助我们监控系统事件,是否有进程修改了系统时间。
    • 开启w32time调试日志,监控服务器与NTP服务器的同步活动。
    • 收集系统配置信息、系统日志,安全日志进行检查。      

    问题发生前的配置

    请在问题发生前,启用如下配置来记录各类日志。

    <1> 启动审核  

    在客户机上,运行gpedit.msc, 展开到:本地计算机->计算机配置->Windows设置->安全设置->本地策略->审核策略

    启用如下审核

    • 审核特权使用: 成功
    • 审核系统事件: 成功
    • 审核进程跟踪: 成功 

    配置完成后,请运行gpupdate /force 生效。

    <2> 配置安全日志

    点击开始,运行eventvwr,右键单击”安全”,选择属性,调整安全日志的属性调整为自动存档,不要覆盖,同时增大日志最大大小为100MB。

    <3> 启用w32time debug日志
    以管理员身份启动CMD,运行命令

       
    1. w32tm /debug /enable /file:C:\windows\temp\w32time.log /size:10000000 /entries:0-300

    您也可以参考微软官方Blog文档说明:

    https://blogs.msdn.microsoft.com/w32time/2008/02/28/configuring-the-time-service-enabling-the-debug-log/ ;

    配置完上述信息后,请等待问题再次发生。

    问题发生后日志收集

    <1> 请收集系统基本信息

    • 点击开始,运行msinfo32.exe,选择”文件”-> “保存”,保存成系统信息文件NFO格式。
    • 点击开始,运行eventvwr, 选择事件查看器中系统日志和应用程序日志,右键“将所有事件另存为”保存保存成 evtx 格式   

    <2> 运行如下命令,导出注册表键值

       
    1. reg export HKLM\SYSTEM\CurrentControlSet\Services\W32Time C:\w32tm.txt reg export HKLM\Software\Policies\Microsoft\W32Time C:\policy.txt

    注:某些系统上可能没有HKLM\SOFTWARE\POLICIES\MICROSOFT\W32Time 注册表键值,这不是错误。

    <3> 停止时间服务debug日志

    以管理员身份启动CMD,运行命令

       
    1. w32tm /debug /disable

    完成上述操作后,请您将C:\w32tm.txt , C:\policy.txt, C:\windows\temp\w32time.log,导出的日志,nfo文件反馈给售后支持进一步分析。

    实际案例

    在时间跳变后,发现安全日志有如下ID 4616的审核日志,提示进程0x390修改的时间。
        

    使用tasklist /svc 命令,可以看到0x390 (十进制为912)的进程为w32 time service。这对于 Windows 时间服务属正常情况,该服务以系统特权运行,定期更改系统时间。其他的系统时间更改意味着对计算机的破坏。
    基于此看出来时间由win 32 time 服务更改的,应该是当时时间出现了偏差,可以相应的调整对应的时间服务器。如果这里是3方程序修改的时间,这种方式会将程序名字列出来,此时可以将三方程序卸载后检查。

    阅读须知

    本文仅供用户使用 ECS Windows 时参考,文中引用的微软官方链接,版权归属微软。请注意文章适用的操作系统范围,以及微软 Windows 产品迭代或者文档未及时更新可能带来的问题,阿里云官方不对引用的微软官方链接内容负责。
    如果您对文档内容有疑问或认为文档内容有误,请及时通过文档下方的评价板块反馈给我们,我们将酌情改进修正。

    如果问题还未解决,请联系售后技术支持


    2019-07-22 11:31:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《云服务器运维之Windows篇》 立即下载
TAKING WINDOWS 10 KERNEL 立即下载
ECS运维指南之Windows系统诊断 立即下载