一、这是干什么的?(大白话)
服务器IIS部署的系统,放着不用会休眠,用户第一次打开页面会卡顿、加载慢。
这个工具作用:
-
服务器开机自动把所有网站、服务全部唤醒
-
每5分钟自动主动唤醒一次所有服务
-
全程后台悄悄运行,不弹窗、不产生日志、不占磁盘空间
-
彻底解决系统冷启动卡顿问题
二、前置说明(必看)
-
支持 D盘、E盘、C盘任意位置 存放文件,不强制固定路径
-
服务器固定内网IP:10.31.20.108
-
所有站点只绑定了内网IP,不能用127.0.0.1访问,脚本已全部适配正确IP
-
出现「网页解析失败」属于正常现象:微服务Health接口是纯后台接口,不是网页,浏览器会提示解析失败,但不影响预热生效,可以忽略!
三、准备工作(30秒搞定)
3.1 新建文件夹
在你想要的磁盘(推荐D盘)新建文件夹:D:\Scripts
文件夹里面放两个文件:
-
nssm.exe 工具文件
-
IIS_WarmUp.bat 脚本文件(下面复制)
3.2 复制最终可用脚本(直接照搬)
新建文本文档,粘贴下面全部代码,保存为:IIS_WarmUp.bat
保存编码选择:ANSI
batch
@echo off
chcp 65001 >nul 2>&1
set APPCMD=%windir%\system32\inetsrv\appcmd.exe
:: 开机只执行一次:等待IIS就绪、拉起所有站点和应用池
ping -n 36 127.0.0.1 >nul 2>&1
%APPCMD% list apppool /xml | %APPCMD% start apppool /in >nul 2>&1
%APPCMD% list site /xml | %APPCMD% start site /in >nul 2>&1
ping -n 16 127.0.0.1 >nul 2>&1
goto CALL_HEALTH
:: 每5分钟循环休眠
:LOOP_SLEEP
ping -n 301 127.0.0.1 >nul 2>&1
:: 批量预热所有微服务
:CALL_HEALTH
for %%u in (
http://10.31.20.108:55000/Health
http://10.31.20.108:55001/Health
http://10.31.20.108:55002/Health
http://10.31.20.108:55003/Health
http://10.31.20.108:55004/Health
http://10.31.20.108:55005/Health
http://10.31.20.108:55006/Health
http://10.31.20.108:55007/Health
http://10.31.20.108:55012/Health
http://10.31.20.108:55013/Health
http://10.31.20.108:55014/Health
http://10.31.20.108:55015/Health
http://10.31.20.108:55020/Health
http://10.31.20.108:55021/Health
http://10.31.20.108:55022/Health
http://10.31.20.108:55023/Health
http://10.31.20.108:55024/Health
http://10.31.20.108:55031/Health
http://10.31.20.108:55032/Health
http://10.31.20.108:55033/Health
http://10.31.20.108:55034/Health
http://10.31.20.108:55035/Health
http://10.31.20.108:55036/Health
http://10.31.20.108:55037/Health
http://10.31.20.108:55038/Health
) do (
powershell -Command "try{Invoke-WebRequest -Uri '%%u' -TimeoutSec 8 -UseBasicParsing | Out-Null;}catch{}" >nul 2>&1
)
goto LOOP_SLEEP
四、测试脚本(必须做,10秒完成)
-
右键CMD,选择【以管理员身份运行】
-
输入命令进入目录:
cd /d D:\Scripts -
输入命令运行脚本:
IIS_WarmUp.bat
✅ 正常结果:窗口没有任何文字、不闪退、一直挂着 = 完全正常
测试无误后关闭CMD窗口即可。
五、安装为系统后台服务(开机自启)
5.1 安装命令
管理员CMD输入:D:\Scripts\nssm.exe install SPC_IIS_WarmUpService
弹出配置窗口,全部按下面填写:
5.2 基础配置
-
Path:
D:\Scripts\IIS_WarmUp.bat -
Working directory:
D:\Scripts -
服务名称:SPC-IIS微服务预热守护服务
5.3 启动设置
Details 页面选择:Automatic (Delayed Start) 延迟启动
作用:开机等系统IIS就绪后再运行,避免启动失败
5.4 故障自动重启设置
Recovery 页面全部选择:Restart the service
重启延迟:60000毫秒(60秒)
其他设置全部默认,点击OK保存
六、服务启停命令(日常使用)
管理员CMD执行:
-
启动服务:
net start SPC_IIS_WarmUpService -
停止服务:
net stop SPC_IIS_WarmUpService -
卸载服务:
D:\Scripts\nssm.exe remove SPC_IIS_WarmUpService confirm
七、小白必懂运行逻辑
-
服务刚启动一瞬间:自动打开所有关闭的网站、服务
-
之后永久循环:休眠5分钟 → 预热所有服务 → 再休眠5分钟
-
已经运行的服务不会被重启、不会影响业务使用
-
全程无日志、无弹窗、无报错、静默运行
八、常见问题解答(小白排错)
问题1:浏览器打开Health提示「网页解析失败」
✅ 正常现象,不用修、不用管。Health是后台检测接口,不是网页,本来就打不开,脚本可以正常识别并预热服务。
问题2:脚本运行没有任何输出
✅ 正常!专门做成无日志静默运行,避免占用硬盘。
问题3:服务器不重启,只重启服务有影响吗?
无任何影响,只会唤醒关闭的服务,正在运行的业务完全不受影响。
问题4:部分服务预热失败
大概率是IIS应用池崩溃被系统禁用,需要人工在IIS里面开启对应程序池。
九、部署完成验收标准
-
Windows服务状态为【正在运行】
-
启动类型为【延迟自动启动】
-
脚本运行不闪退、无报错
-
服务器重启后服务自动运行
(注:部分内容可能由 AI 生成)