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 生成)

相关推荐
深念Y4 分钟前
微服务抽取路线图:从胖单体到 ARM 集群
前端·arm开发·数据库·后端·微服务·云原生·架构
凤山老林8 分钟前
高可靠 API 网关架构:Spring Cloud Gateway 集成 Sentinel 实现智能限流、动态路由与安全管控
安全·spring cloud·架构·sentinel
我滴老baby21 分钟前
部署 Portainer CE,把日志、镜像和数据卷搬进网页
数据库·人工智能·架构
2301_旺仔23 分钟前
【Docker 镜像仓库】
docker·云原生·仓库
^酸酸32 分钟前
Prometheus 监控架构部署实战:二进制与 Docker 双方案
docker·架构·prometheus
seacracker39 分钟前
从本地磁盘到 NVMe-oF target:PowerFS 存储后端抽象的预留式分层设计
架构·ai存储·统一存储·powerfs
xianyuCcCcCCCcc39 分钟前
企业级高可用实战:Keepalived + LVS(DR)+ MariaDB 主主架构深度解析
架构·mariadb·lvs
程序员无隅43 分钟前
从工具循环到上下文压缩:读懂 Pi 编程 Agent 的内部架构
ai·架构
mldong44 分钟前
跨语言对齐方法论:参考实现先行 + 契约测试
java·架构
黑马程序员毕设1 小时前
基于B/S架构的“指尖乡味”助农电商小程序系统设计与实现
spring boot·微信小程序·小程序·架构·课程设计·毕设