IIS微服务5分钟自动预热守护服务

一、这是干什么的?(大白话)

服务器IIS部署的系统,放着不用会休眠,用户第一次打开页面会卡顿、加载慢

这个工具作用:

  • 服务器开机自动把所有网站、服务全部唤醒

  • 每5分钟自动主动唤醒一次所有服务

  • 全程后台悄悄运行,不弹窗、不产生日志、不占磁盘空间

  • 彻底解决系统冷启动卡顿问题

二、前置说明(必看)

  • 支持 D盘、E盘、C盘任意位置 存放文件,不强制固定路径

  • 服务器固定内网IP:10.31.20.108

  • 所有站点只绑定了内网IP,不能用127.0.0.1访问,脚本已全部适配正确IP

  • 出现「网页解析失败」属于正常现象:微服务Health接口是纯后台接口,不是网页,浏览器会提示解析失败,但不影响预热生效,可以忽略!

三、准备工作(30秒搞定)

3.1 新建文件夹

在你想要的磁盘(推荐D盘)新建文件夹:D:\Scripts

文件夹里面放两个文件:

  1. nssm.exe 工具文件

  2. 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秒完成)

  1. 右键CMD,选择【以管理员身份运行】

  2. 输入命令进入目录:cd /d D:\Scripts

  3. 输入命令运行脚本: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 生成)

相关推荐
不爱说话郭德纲2 小时前
我只给了 TRAE Work 一张差评截图,它最后却把自己的 P0 结论推翻了?
前端·后端·架构
深圳元器猫2 小时前
从分立到集成:RX8130CE RTC时钟模块架构解析与选型实战
架构·实时音视频
VortMall2 小时前
VortMall 微服务商城 v1.3.13 版本更新|『会员 + 分销』功能优化,提升私域裂变经营能力
微服务·云原生·架构
爱吃蔬菜09133 小时前
一键部署K8s v1.30.14全离线解决方案
云原生·容器·kubernetes
未来智慧谷4 小时前
从 Atlas 关停复盘:AI 应用的三种载体形态怎么选(独立应用 / 浏览器扩展 / 桌面宿主)
前端·人工智能·ai·架构·浏览器
MrDJun4 小时前
突破动态渲染与反爬限制:现代网页变更监控系统的架构演进与实践
架构
科技之门4 小时前
全维度权威检测背书,海悟液冷 CDU 双架构书写算力基础设施节能降碳答卷
架构
TunerT_TQ4 小时前
Valhalla 静态工程审阅 #004|MoonshotAI MoonEP 源码证据驱动评测【大厂开源基础设施特辑】
架构·github
半兽先生5 小时前
MinerU + LibreOffice 混合架构:搞定 .doc/.ppt 旧格式文档解析与切片
人工智能·python·机器学习·ai·架构