00:00
录屏看一下这个问题啊,啥问题就是说。物理内存大于2G,但是突然有一天发现这个物理内存可用只只剩2G,剩下的内存保留硬件设置了,就是这里任务管理器性能,这不是有内存嘛,然后右边右下角它有为硬件保留的内存,一般来说保留个几百兆这个都是正常的,如果你说16G内存保留了14G,然后可用只有2G,这种就太不正常了。这种case其实我见过几个啊,一般都有一些共性,就是拖,他出现这个问题之前,他经常是内存爆满,然后虚拟内存远大于物理内存,然后也没有升级过内存配置,呃。然后即便升级的升级内存配置以后,它业务也没有加以限制,就经常还是把它用满,就这种时间,这种情况持续的时间一长。然后突然有一天重启机器可能就会出现。
01:00
跟激活相关的那个数据结构不完整。导致激活失败,然后触发了一个Windows的操作系统的原理。这个。这个原理的话,微软在他们Windows操作系统原理Windows,呃,这本书里有写。这句话。这句英文翻译过来就是Windows对物理内存的支持取决于硬件限制,许可就是kms license这些以及操作系统、数据结构和驱动程序的兼容性。然后解决方案的话,就是重新激活。激活的话就是四局命令。UK的话就是are product keyipk的话就是install keys k Ms的话就是set k Ms。这个最后一句就是a to的话就是激活。然后这个product key的话,微软是根据操作系统不同,它公布在他的官网的,你去具体具体化成自己的那个K就行了,我这里演示一下啊这次命令。
02:04
它是有先后顺序的,而且你不能说一下子四句全部复制粘贴它,因为本身一句一句它有个过程,你要一下子四句执行,他,他可能上一句的结果还没有,嗯,就是被系统记住呢,然后你第二句又跟着上了,那那他就会报错,所以啊,这个不要着急啊,我我演示一下,你不信的话你看啊。我直接直接一下子粘这四句,他肯定会报错的,因为他上一句的结果还没有出来,你。我粘贴啊。找不到产品密钥,他报这个就这不能不能一溜全执行,你得一句一句执行。
03:03
卸载成功,然后安装安装成功。然后再设置。设置成功。然后再激活,激活这句命令本身就是,呃,执行的时间长,这个要耐心等一下。然后就等着就行了。等一会儿啊。我们继续看,就就这种的话,你手动执行的话,肯定一句一句执行对吧。呃,不要着急,然后如果你要写成BAT,对吧,去执行这种脚本文件,那这种写法才是可靠的。这种写法才可靠的,当然最后我加了三句对吧,就是真正激活是最后一句,前面是做铺垫的,前面三句是做铺垫的那个,最后一句激活我重复了三遍,就是为了提升健壮性。然后我们再回来看一下啊,他这已经激活了,激活的时候我会给你弹窗告诉激活了,就是手动搞的话,就一句一句执行。
04:07
然后你要写BAT就就按照这种写法,当然这个文档我今天更新了一下啊。这个问题的本质,其实微软已经给我们说明过原因了,就是说这个路径的这个注册表里头的数据结构不完整了。然后关于这个这个注册表,你普通软件是打不开的,我在谷歌上搜了一下,有一个软件。叫这个product policy editor,就是说这个产品的这个策略,就是微软操作系统产品的这个策略,有一个专用的工具,它可以打开这个路径的注册表,去读取这个数据结构,这个数据结构里头包含的信息很多,呃,正常来说有几万条,但是如果当你那个内存高负载对吧?呃,那个虚拟内存经常高于物理内存的话,它可能这个里头就不完整了,在你某次重启的过程中,它就不完整了。然后具体解法就是就是上面的这个解决办法,但是呢。
05:04
当然,这是当时跟微软交流的一个邮件啊。就是关于这种情况,其实内存不足这种情况自己也比较好判断,一般来说操作系统会记录这个日志事件ID的话是2004,实际上我我有其他case,我我写过一个。写过一个案例。就是你去你去看这个日志的话,它有这个世界ID2004的日志,会告诉你内存不足的情况,然后具体什么进程,然后名字的话,这这个事件的来源就是resource extion exhaustion。就是,顾名思义就是资源耗尽。然后分析这个系统日志的话,对吧,因为这个分析的日志过程中有开关机相关的事件对吧,有内存不足的事件对吧,还有那个激活相关的事件这些,呃,你要觉得那个系统自带的那个事件查看器分析起来不不爽的话,你可以用一个第三方工具叫for event log view,这个工具还挺好用的,我专门写过一个文档来介绍。
06:10
它可以根据时间ID来过滤,根据时间范围来过滤,根据那个告警级别来过滤,根据那个。就是description,就是日志的这个里头的string,就是字符串来过滤,像这个激活相关的就过滤这个这这个字符串,然后当然你指定事件ID直接过滤的话,过滤效率高,你要字符串过滤的话,它那个效率就比较慢。呃,然后我们说一下这个问题最终怎么规避啊,针对这种情况的话,它直接相关性就是2004这个内存不足嘛,对吧,我们可以这样来规避,就是配置个计划任务,我这里演示一下啊。配置个计划任务,打开计划任务。但是我这直接用命令打开,你可以用那个就是。自己去找那个。
07:00
计划任务啊,我我想一下是在。睡在哪儿啊?一会儿吧,一会儿,一会儿我就记住这个命令了。打开计划任务啊。然后我这已经配好,我把它禁用了,我我那个删先看一下吧,看一下具体什么任务啊属性,你看它是名字叫激活,然后是创建是创建者是administrator,然后不管是用户是否登录都要运行,不存储密码,最高权限运行触发器的话就是什么,当发生事件。日志是system日志原是那个刚才说的那个resource exhaustion那个原,然后事件ID是2004,当触发这个的我放大一点啊。当触发这个事件的时候,无限期的每15分钟重复一次。你新建的时候就是这样,就新建的时候选那个发生事件时,然后。
08:00
日志的话就是system日志拉到最下面有个系系统,然后圆的话就是。那个就是刚才说的那个Microsoft那个打头的那个。我看说。Resource。就这个对。Resource,然后2002004。然后你可以重复对吧,重复价格你可以配配多久。十十五分钟或者五分钟一次。都行。我我建议还是15分钟吧,持续时间的话无限期,然后就确定。就行了,当然我这已已经配过了一个了,我就就删了就行,然后操作的话,到时候这个触发器触发了对吧,操作执行什么的,就直接这个C盘跟目录下的这个激活点BAT里头内容就是我刚才文档里介绍的那个内容,这里后面这这一。一串啊,这就说白了就是后台运行,运行完以后exit退出。
09:01
呃,你一个计划任务,如果你配配置好了对吧。它那个你可以导出,导出以后给别人用。当然我这里就不禁用了,我给他启用一下。启用一下就是准备就绪的状态,他就会给你检测,检测这个2004是不是有,有的话就是给你执行,我上次执行的结果就是零嘛,零就是代表执行完了,然后退出了。没有出现什么异常,我现在我现在可以手动把它干预一下啊,给他给他把这个K卸载一下。卸载了对吧,卸载了以后。我这个时候执行那个DD去查看的话,他肯定说找不到产品密钥肯定也没激活,对吧,然后这个时候这个计划任务不是存在吗?我验证的激划任务,当然我现在是不等他检测到2004,我就强制人工给他运行这个计划任务了,就是运行就触发他那个BAT执行我触发一下啊。
10:01
运行。因为本身我我又自己ato一遍,最后又重复三遍,它这个过程稍微时间有点长,大概两分钟时间吧,啊,现在是正在运行的过程中,一会我们直接就拿这个div验证,它肯定是激活的状态了。因为它的过程中啊,他这个时候你激活你直接这个命令,它可能会有一些意外情况,比如说没有反应,或者说其他的。现在就是没反应的状态,我们一会儿再执行吧。
11:13
还是正在运行。等一会儿啊,两分钟。哦,那个出结果了。他应该是第一遍已经跑完了,所以他出结果了,后面还有三遍呢,让他先跑着,然后。把它运行完了。像这种啊,这种就是说在执行的过程中。
12:03
可能因为我刚才这个人工干预有关,对吧,他他正在执行,然后这个时候你你人工去人工去做一些激活相关的干预,他可能就会出问题。最好是刚才演示的过程中别别干预。那个我重新执行一遍啊,重新运行一遍。呃,算了,我先说这个吧,就是说一个计划任务弄,弄好以后,你要给别人用的话,你可以导出这个计划任务导出。到处查二门文件。导出以后别人拿这个茶片儿怎么用啊?你去编辑,编辑的时候,它导出的时候已经带时间戳了,你把这个时间戳删掉,然后。这里不是有那个user ID吗?User ID。就是500,就是administrator这个我怕那个ID在不同的系统有有不一样的地方,把这个直接换成administrator就行了,然后保存一下。
13:07
然后你把计划任务删掉。删掉,然后你导入对吧,导入计划任务。导入的时候,它就自动给你把所有的都识别出来了,名字是激活,然后不管用户是否登录都要运行,不存储密码,然后最高权限运行触发器,就是刚才这个触发器,操作的话就是执行这个BAT。然后确定就行了,还有就是准备就绪的状态。当然你如果人工手动去执行的话,对吧,右击以管理员身份运行,它就是这样。你就会完整的看到这个回弦。因为我配置的是后台运行嘛。我配置的是后台运行,所以你人工看不到。操操作就是这个后面这个。
14:02
代表后台运行。总之就是你可以通过计划任务。来规避这种事情的发生,而且它是循环的计划任务。你看就激活了吗。这是第一遍,还后面还有三遍。这样的话就是。你的内存对吧,在不变的情况下。就是物理内存不变对吧,你还想规避这个问题,就这么规。
我来说两句