当前位置: 首页 > article >正文

ASP.NET Core使用Quartz部署到IIS资源自动被回收解决方案

iis自动回收的原因

  • 回收机制默认配置,间隔时间是1740分钟,意思是:默认情况下每1740分钟(29小时)回收一次,定期检查应用程序池中的工作进程,并终止那些已经存在很长时间或已经使用了太多资源的工作进程
    在这里插入图片描述
  • 进程模型默认配置,闲置时间默认是20分钟,意思是:指在应用程序池中没有请求时,IIS 会将该应用程序池中的进程保持活动状态的最长时间。如果在此时间段内没有新的请求到达,IIS 将会终止应用程序池中的进程,以释放系统资源
    在这里插入图片描述

回收机制和进程配置对Quartz任务影响很大

  • 1.对于定时任务来说,闲置时间和回收间隔时间都可能会对其产生影响。如果闲置时间过短或回收间隔时间过长,可能会导致工作进程被终止,从而导致定时任务未能正常执行。
  • 2.闲置时间:在web api项目中配置的定时任务,在启动定时任务后,一旦达到闲置时间,定时任务就会被强制终止。

比如我有一个定时任务需要每天24小时每分钟都在跑的,每隔1分钟执行一次,启动任务后,过了闲置时间设置的20分钟,我的定时任务就被强制停止了。想要任务从新执行,就必须重新启动任务。

方案1,ASP.NET Core 中配置心跳机制

  • 在项目中创建心跳端点
// Program.cs 或 Minimal API
app.MapGet("/heartbeat", () => 
{return Results.Ok(new { Status = "Alive", Timestamp = DateTime.UtcNow });
});
  • 固定时间间隔设置0
    在这里插入图片描述
  • 设置回收时间
    在这里插入图片描述
  • 进程模型中,闲置超时设置0
    在这里插入图片描述
  • Windows 任务计划程序(每5分钟访问一次)
# 测试接口是否能正常访问
Invoke-WebRequest -Uri "http://localhost:89/heartbeat" -UseBasicParsing# PowerShell 命令(管理员权限运行)匿名身份验证
Register-ScheduledJob -Name "Rap-KeepAlivePing" -ScriptBlock {Invoke-WebRequest -Uri "http://localhost:89/heartbeat" -UseBasicParsing
} -Trigger (New-JobTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5) -RepetitionDuration ([TimeSpan]::MaxValue))# PowerShell 命令(管理员权限运行)windows身份认证,测试下来各种问题
Register-ScheduledJob -Name "Rap-KeepAlivePing" -ScriptBlock {$cred = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("用户名:密码"))Invoke-WebRequest -Uri "http://localhost:89/heartbeat" `-Headers @{ Authorization = "Basic $cred" } `-UseBasicParsing
} -Trigger (New-JobTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 5)# 验证任务是否创建
Get-ScheduledJob -Name "Rap-KeepAlivePing"# 停止任务
Unregister-ScheduledJob -Name "Rap-KeepAlivePing"# 启动任务(立即运行一次)
Start-Job -DefinitionName "Rap-KeepAlivePing"# 禁用任务
Disable-ScheduledJob -Name "Rap-KeepAlivePing"# 启用任务
Enable-ScheduledJob -Name "Rap-KeepAlivePing"# 删除任务
Unregister-ScheduledJob -Name "Rap-KeepAlivePing"# 查看任务基本信息
Get-ScheduledJob -Name "Rap-KeepAlivePing"# 查看完整任务详情
Get-ScheduledJob -Name "Rap-KeepAlivePing" | Format-List *# 查看任务执行历史记录
Get-Job -Name "Rap-KeepAlivePing" | Format-Table -AutoSize
  • 效果

我在13:25分回收,心跳在三分钟后触发,任务正常执行
在这里插入图片描述

方案2,IIS预加载特性(前提是你的web网站是匿名访问)

  • 安装“应用程序初始化”
    在这里插入图片描述

  • IIS线程池高级设置,常规->启动模式(设置为AlwayRunning)、进程模型->闲置超时(分钟)(设置为0)、回收->固定时间间隔(分钟)(设置为0),待定时间(设置定时回收时间)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 网站设置成预加载
    在这里插入图片描述
    在这里插入图片描述

  • 配置预加载地址
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 效果,我分别在4.40和4.45设置回收,请求一过来,我的初始化任务就自动触发了
    在这里插入图片描述

总结

1.如果用户在iis下使用windwos登录,上面两种方法行不通。
2.身份认证在匿名的情况下,这两种解决方案可行,
3.搞这么麻烦不如果弄一个nginx做转发
4.一定要在iis下面使用windws登录和使用Quartz那程序中不要使用session和cookie了,把用户信息放到redis,把闲置超时设置0、固定时间间隔设置0

相关文章:

ASP.NET Core使用Quartz部署到IIS资源自动被回收解决方案

iis自动回收的原因 回收机制默认配置,间隔时间是1740分钟,意思是:默认情况下每1740分钟(29小时)回收一次,定期检查应用程序池中的工作进程,并终止那些已经存在很长时间或已经使用了太多资源的工作进程 进程模型默认配…...

Fullstack 面试复习笔记:Spring / Spring Boot / Spring Data / Security 整理

Fullstack 面试复习笔记:Spring / Spring Boot / Spring Data / Security 整理 之前的笔记: Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理Fullstack 面试复习笔记:Java 基础语法 / 核心特性体系化总结Fullsta…...

调用.net DLL让CANoe自动识别串口号

1.前言 CANoe9.0用CAPL控制数控电源_canoe读取程控电源电流值-CSDN博客 之前做CAPL通过串口控制数控电源,存在一个缺点:更换电脑需要改串口号 CSDN上有类似的博客,不过要收费,本文根据VID和PID来自动获取串口号,代码…...

第5章:Cypher查询语言进阶

在掌握了Cypher的基础知识后,本章将深入探讨更高级的查询技术。这些进阶技能将帮助您构建更复杂、更高效的查询,解决实际业务中的复杂问题,并充分发挥Neo4j的图数据处理能力。 5.1 复杂查询构建 随着业务需求的复杂性增加,查询也…...

【Python进阶】元类编程

目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…...

算法(蓝桥杯学习C/C++版)

up: 溶金落梧桐 溶金落梧桐的个人空间-溶金落梧桐个人主页-哔哩哔哩视频 蓝桥杯三十天冲刺系列 BV18eQkY3EtP 网站: OI Wiki OI Wiki - OI Wiki 注意 比赛时,devc勾选c11(必看) 必须勾选c11一共有两个方法,任用…...

Docker镜像无法拉取问题解决办法

最近再学习RabbitMQ,需要从Docker镜像中拉取rabbitMQ,但是下拉失败 总的来说就是无法和docker镜像远程仓库建立连接 我又去尝试ping docker.io发现根本没有反应,还是无法连接找了许多办法还是没有办法解决,最后才发现是镜像问题&a…...

ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器

版本和环境信息如下: PC平台: Windows 11 专业版 Zephyr开发环境:v4.1.0 Windows 下搭建 Zephyr 开发环境 WeAct BlackPill V1.2开发板: WeAct STM32F411CEU6 BlackPill 核心板 Debug调试器: ST-LINK V2: ST-LINK V2 S…...

# 主流大语言模型安全性测试(二):英文越狱提示词下的表现与分析

主流大语言模型安全性测试(二):英文越狱提示词下的表现与分析 在上一篇文章中,我们对多个主流大语言模型(LLM)进行了中文诱导性提示词的越狱测试,评估其是否能够在面对非法、有害或危险内容请求…...

SAP 在 AI 与数据统一平台上的战略转向

在 2025 年 SAP Sapphire 大会上,SAP 展示了其最新的产品战略和技术整合方向,与以往不同的是,今年的讨论更加务实、聚焦客户实际需求。SAP 强调,ERP 的转型不再是“一刀切”或破坏性的,而是可以根据客户现状&#xff0…...

服务器磁盘空间被Docker容器日志占满处理方法

事发场景: 原本正常的服务停止运行了,查看时MQTT服务链接失败,查看对应的容器服务发现是EMQX镜像停止运行了,重启也是也报错无法正常运行,报错如下图: 报错日志中连续出现两个"no space left on devi…...

c++学习-this指针

1.基本概念 非静态成员函数都会默认传递this指针(静态成员函数属于类本身,不属于某个实例对象),方便访问对象对类成员变量和 成员函数。 2.基本使用 编译器实际处理类成员函数,this是第一个隐藏的参数,类…...

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计 ——2025年数字资产交易平台的性能与合规双轮驱动 一、高并发撮合引擎:从微秒级延迟到百万TPS 核心架构设计 订单簿优化:数据结构创新:基于红黑树与链表混合存储&#xff0c…...

OpenCV计算机视觉实战(10)——形态学操作详解

OpenCV计算机视觉实战(10)——形态学操作详解 0. 前言1. 腐蚀与膨胀1.1 为什么要做腐蚀与膨胀1.2 OpenCV 实现 2. 开运算与闭运算2.1 开运算与闭运算原理2.2 OpenCV 实现 3. 形态学梯度与骨架提取3.1 形态学梯度3.2 骨架提取 小结系列链接 0. 前言 形态…...

libiec61850 mms协议异步模式

之前项目中使用到libiec61850库,都是服务端开发。这次新的需求要接收服务端的遥测数据,这就涉及到客户端开发了。 客户端开发没搞过啊,挑战不少,但是人不就是通过战胜困难才成长的嘛。通过查看libiec61850的客户端API发现&#xf…...

[论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力

【论文速读】利用负信号蒸馏:用REDI框架提升LLM推理能力 论文信息 arXiv:2505.24850 cs.LG cs.AI cs.CL Harnessing Negative Signals: Reinforcement Distillation from Teacher Data for LLM Reasoning Authors: Shuyao Xu, Cheng Peng, Jiangxuan Long, Weidi…...

基于 NXP + FPGA+Debian 高可靠性工业控制器解决方案

在工业系统开发中,**“稳定”**往往比“先进”更重要。设备一旦部署,生命周期动辄 5~10 年,系统重启或异常恢复成本高昂。 这时候,一套“值得托付”的软硬件组合,就显得尤为关键。 ✅ NXP —— 提供稳定、长期供货的工…...

CSS 选择器全解析:分组选择器/嵌套选择器,从基础到高级

一、CSS 选择器基础&#xff1a;从单个元素到多个元素 CSS 选择器是用来定位 HTML 元素的工具&#xff0c;就像 “元素的地址”。最基础的选择器有&#xff1a; 元素选择器&#xff08;按标签名定位&#xff09; css p { color: red; } /* 所有<p>标签 */ div { b…...

uniapp 对接腾讯云IM群公告功能

UniApp 实战&#xff1a;腾讯云IM群公告功能 一、前言 在即时通讯场景中&#xff0c;群公告是信息同步的重要渠道。本文将基于uniapp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群公告的发布、修改、历史记录查询等核心功能。 群公告的数据结构设计权限校…...

垂起固定翼无人机应用及技术分析

一、主要应用行业 1. 能源基础设施巡检 电力巡检&#xff1a;适用于超高压输电线路通道的快速巡查&#xff0c;实时回传数据提升智能运检效率。 油田管道监测&#xff1a;利用长航时特性&#xff08;1.5-2小时&#xff09;对大范围管道进行隐患排查&#xff0c;减少人力巡…...

Python Robot Framework【自动化测试框架】简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

vite配置@别名,以及如何让IDE智能提示路经

1.配置路径(vite.config.js) // vite.config.js import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; import path from "path";// https://vite.dev/config/ export default defineConfig({server: {port: 8080,},plu…...

c#bitconverter操作,不同变量类型转byte数组

缘起:串口数据传输的基础是byte数组&#xff0c;write(buff,0,num)或者writeline(string)&#xff0c;如果是字符串传输就是string变量就可以了&#xff0c;但是在modbus这类hex传递时&#xff0c;就要遇到转换了&#xff0c;拼凑byte数组时需要各种变量的值传递&#xff0c;解…...

【Linux】LInux下第一个程序:进度条

前言&#xff1a; 在前面的文章中我们学习了LInux的基础指令 【Linux】初见&#xff0c;基础指令-CSDN博客【Linux】初见&#xff0c;基础指令&#xff08;续&#xff09;-CSDN博客 学习了vim编辑器【Linux】vim编辑器_linux vim insert-CSDN博客 学习了gcc/g【Linux】编译器gc…...

RPA+AI:自动化办公机器人开发指南

RPAAI&#xff1a;自动化办公机器人开发指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 RPAAI&#xff1a;自动化办公机器人开发指南摘要引言技术融合路径1. 传感器层&#xff1a;多模态数据接入2. 决策层&…...

daz3d + PBRSkin (MDL)+ SSS

好的&#xff0c;我们来解释一下 Daz3D 中的 PBRSkin (MDL) Shader。 简单来说&#xff0c;PBRSkin (MDL) 是 Daz Studio 中一种基于物理渲染&#xff08;PBR&#xff09;技术、专门用于创建高度逼真人物皮肤效果的着色器&#xff08;Shader&#xff09;。 它利用 NVIDIA 的材…...

计算矩阵A和B的乘积

根据矩阵乘法规则&#xff0c;编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写&#xff0c;函数fix_prod_opt()是优化方法编写。 程序代码 #define N 3 #define M 4 typedef int fix_matrix1[N][M]; typedef int fix_matrix2[M][N]; int fix_prod_ele(f…...

Houdini POP入门学习05 - 物理属性

接下来随着教程学习碰撞部分&#xff0c;当粒子较为复杂或者下载了一些粒子模板进行修改时&#xff0c;会遇到一些较奇怪问题&#xff0c;如粒子穿透等&#xff0c;这些问题实际上可以通过调节参数解决。 hip资源文件&#xff1a;https://download.csdn.net/download/grayrail…...

每日Prompt:双重曝光

提示词 新中式&#xff0c;这幅图像将人体头像轮廓与山水中式建筑融为一体&#xff0c;双重曝光&#xff0c;体现了反思、内心平静以及人与自然相互联系的主题&#xff0c;靛蓝&#xff0c;水墨画&#xff0c;晕染&#xff0c;极简...

sendDefaultImpl call timeout(rocketmq)

rocketmq 连接异常 senddefaultimpl call timeout-腾讯云开发者社区-腾讯云 第一种情况&#xff1a; 修改broker 的配置如下&#xff0c;注意brokerIP1 这个配置必须有&#xff0c;不然 rocketmq-console 显示依然是内网地址 caused by: org.apache.rocketmq.remoting.excep…...