国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何優(yōu)雅的關閉一個IIS站點

這篇具有很好參考價值的文章主要介紹了如何優(yōu)雅的關閉一個IIS站點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

眾所周知,當我們使用IIS的時候,在使用負載均衡的情況下,想停掉一個站點,通常會點擊Sites(網站)中的Stop(停止)來停止一個站點。但是這樣做,會帶來一個問題,當點擊Stop(停止)時,正在響應中的請求會立刻被切斷,使客戶端無法收到響應,后續(xù)也無法連接該站點,在某些業(yè)務場景中,比如涉及金額交易業(yè)務,在沒有使用冪等,鎖等手段的情況下,強行切斷的請求后,客戶端不知道該交易的交易情況,如果再次請求(因為本站點已停止,負載均衡會指向其他機器)會造成重復交易,如果不請求,客戶端也不能確切的知道該交易已經成功。類似微服務中,服務間請求超時的情況。

熟悉IIS的讀者通常不會直接停止站點,而會選擇點擊Application Pools(應用程序池)中的Stop(停止)來停止一個站點,應用程序池在被停止后,新的請求會被響應503,負載均衡識別到503后,會把該請求負載到其他機器上,以保證業(yè)務不會中斷。同樣的問題,當點擊Stop(停止)停止時,正在響應的請求,會發(fā)生什么情況呢。有經驗的開發(fā)/運維會回答,在Application Pools(應用程序池)里Advanced Settings(高級設置)中Process Model(進程模型)組包含一個Shutdown Time Limit(關閉時間限制)選項,默認值為90s。這就意味著當應用程序池停止、回收時,IIS會最多等待沒響應的請求90s,如果90s內,所有的請求響應完畢,應用程序池就會被停止、回收。那么如何判斷IIS在這90s內未響應請求是否全部被響應呢,如果部署的程序是ASP.NET Core,可以在Event Viewer(事件查看器)/Windows Logs(Windows 日志)/Application(應用程序)里查看事件日志,如果出現Failed to gracefully shutdown application 'MACHINE/WEBROOT/APPHOST/xxx'.這個警告,則表明存在請求沒有被響應,被IIS強行關閉的情況。

事與愿違,在實際生產實踐中,讀者會發(fā)現IIS并沒有"等待"90s,就會關掉連接,而客戶端還在傻傻等待90s后才會顯示無響應,造成正在請求的HTTP無法響應。通過閱讀[官方文檔](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-8.0#ihostapplicationlifetime ".NET Generic Host in ASP.NET Core")我們得知,等ASP.NET Core收到關閉信號時,對于正在處理的HTTP請求,會等待5s,5s之后會像IIS那樣關閉連接。所以我們需要設置HostOptions
var builder = WebApplication.CreateBuilder(args);

......

builder.Services.Configure<HostOptions>(options =>
{
    //If the timeout period expires before all of the hosted services stop, any remaining active services are stopped when the app shuts down. The services stop even if they haven't finished processing. If services require more time to stop, increase the timeout.
    //Default: 5 seconds
    options.ShutdownTimeout = TimeSpan.FromSeconds(30);
});

......
按照文檔修改程序后,實際測試發(fā)現,設置.NET Generic Host的ShutdownTimeout"似乎"不生效, 在改動前由于IIS的Shutdown Time Limit默認是90s ,ASP.NET Core中ShutdownTimeout默認值是5s,所以在改動前IIS站點會最多等待正在請求的HTTP 5s 在改動后,筆者把.NET Generic Host的ShutdownTimeout調整至30s后,實測下來發(fā)現點擊停止應用程序池后,竟然只能等正在請求中的HTTP 10s ! 于是再次搜索資料,終于發(fā)現還有一個參數需要設置-> https://stackoverflow.com/questions/51634638/graceful-shutdown-of-ihostedservice  和官方文檔[地址](https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.1#attributes-of-the-aspnetcore-element "ASP.NET Core Module (ANCM) for IIS") 在最近的文檔(.NET 8)里竟然把Attributes of the aspNetCore element這一節(jié)刪掉(移走)了,導致查閱最新文檔,根部搜索不到所需信息,接下來按照文檔操作就十分簡單了,加上shutdownTimeLimit屬性,修改web.config如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2"
          resourceType="Unspecified" />
      </handlers>
      <aspNetCore shutdownTimeLimit="30" processPath="dotnet" arguments=".\WebApplicationTest.dll" stdoutLogEnabled="true"
        stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
修改后,再次實測,即符合預期,在使用ASP.NET Core的情況下關于shutdownTime總結(省流)如下:

IIS應用程序池shutdownTime默認值為90s

AspNetCoreModuleV2shutdownTime默認值為10s

.NET Generic Host(應用程序)默認值為5s

如要修改shutdownTime則需同時關注以上三處設置。祝您使用愉快!

?

聲明

本文采用知識共享署名-非商業(yè)性使用-相同方式共享 2.5 中國大陸許可協議進行許可,發(fā)表在CSDN和博客園,歡迎讀者轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接!請讀者/爬蟲們尊重版權文章來源地址http://www.zghlxwxcb.cn/news/detail-747865.html

到了這里,關于如何優(yōu)雅的關閉一個IIS站點的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JVM安全退出(如何優(yōu)雅的關閉java服務)

    JVM安全退出(如何優(yōu)雅的關閉java服務)

    上線!重啟!你還在為丟失任務而煩惱么?看這里看這里,從此不再丟任務,JVM可以安全退出的 在交易流程中,為了提升服務的性能,我們做了一些異步化的優(yōu)化,比如更新用戶最近使用的收貨地址、提單完成后通過MQ去發(fā)送各種通知類消息、清理用戶的購物車等等這些操作,

    2024年03月22日
    瀏覽(26)
  • Nginx采用虛擬目錄的方式代理IIS站點

    Nginx采用虛擬目錄的方式代理IIS站點

    由于IIS出現了某種不可知的問題,H5APP的部署從IIS改為Nginx。 H5APP的Nginx的部署比較簡單,直接修改官方的實例即可 但是之前H5站點中有一個虛擬目錄用于客戶單點登錄認證,所以需要在Nginx中添加對應的虛擬目錄,但是單點認證是ASP.Net程序,Nginx無法啟動,所以只能部署到I

    2024年02月03日
    瀏覽(21)
  • iis配置網站服務器配置端口,如何實現IIS多個網頁同一個端口?

    在Internet Information Services (IIS) 中配置多個網站共用同一個端口是可能的,但需要進行一些特定的配置。以下是實現這一目標的一般步驟: 創(chuàng)建多個網站: 首先,您需要在 IIS 中創(chuàng)建多個不同的網站。每個網站應該有自己的根目錄和內容。 綁定共享端口: 在每個網站的配置中

    2024年02月13日
    瀏覽(125)
  • 在winserver08(R2)上部署IIS并搭建ASP站點

    在winserver08(R2)上部署IIS并搭建ASP站點

    步驟1:修改計算機的名稱 步驟2:部署IIS服務并串聯web站點;首先添加角色,并選擇IIS服務 步驟3:在“角色服務”選擇應用程序開發(fā)(全選) 步驟4:全部安裝完成后,就可以在主機上進行查看訪問 步驟5:在網站上查找ASP網址的源代碼,并放入C盤中 步驟6:在網站下添加網址

    2024年02月04日
    瀏覽(21)
  • Windows使用IIS服務搭建WebDAV站點結合內網穿透公網訪問

    Windows使用IIS服務搭建WebDAV站點結合內網穿透公網訪問

    自己用Windows Server搭建了家用NAS主機,WebDAV的文件共享方式當然也是必不可少的。 本文使用的是WIN10 專業(yè)版。 1.1 打開控制面板,查看方式改為“類別”,進入“程序”,“啟用或關閉Windows功能” 1.2 在Internet Information Services(IIS)中勾選“IIS管理控制臺”、“Windows身份驗證

    2024年02月03日
    瀏覽(29)
  • IIS站點提示 403 - Forbidden: Access is denied問題解決方案

    IIS站點提示 403 - Forbidden: Access is denied問題解決方案

    You do not have permission to view this directory or page using the credentials that you supplied. 作為新手,初期可能想到是否是IIS組件缺少、防火墻IP限制等等問題?;蛟S經過修改防火墻策列容易解決部分IP訪問的報錯問題,但是很容易忽略IIS本身有IP地址訪問限制功能,建議先修改IIS自身的IP地

    2024年02月14日
    瀏覽(26)
  • 【IIS搭建網站】本地電腦做服務器搭建web站點并公網訪問「內網穿透」

    【IIS搭建網站】本地電腦做服務器搭建web站點并公網訪問「內網穿透」

    在網上各種教程和介紹中,搭建網頁都會借助各種軟件的幫助,比如網頁運行的Apache和Nginx、數據庫軟件MySQL和MSSQL之類,為方便用戶使用,還出現了XAMPP、PHPStudy、寶塔面板等等一系列集成服務,都是為了方便我們能快速建立網站。是不是不適用這些軟件就無法建立網站了呢?

    2024年02月02日
    瀏覽(40)
  • 如何優(yōu)雅的發(fā)布一個 TypeScript 軟件包?

    向 NPM 發(fā)布軟件包本身并不是一個特別困難的挑戰(zhàn)。但是,配置你的 TypeScript 項目以取得成功可能是一個挑戰(zhàn)。你的軟件包能在大多數項目上運行嗎?用戶能否使用類型提示和自動完成功能?它能與 ES Modules (ESM) 和 CommonJS (CJS) 風格的導入一起使用嗎? 閱讀完本篇文章后,你將

    2024年01月23日
    瀏覽(24)
  • 如何優(yōu)雅地創(chuàng)建一個自定義的Spring Boot Starter

    優(yōu)雅永不過時,希望看完本文,你會覺得starter如此優(yōu)雅! Spring Boot Starter是一種簡化Spring Boot應用開發(fā)的機制,它可以通過引入一些預定義的依賴和配置,讓我們快速地集成某些功能模塊,而無需繁瑣地編寫代碼和配置文件。Spring Boot官方提供了很多常用的Starter,例如 spring

    2024年02月11日
    瀏覽(29)
  • 最佳實踐:如何優(yōu)雅地提交一個 Amazon EMR Serverless 作業(yè)?

    博主歷時三年精心創(chuàng)作的《大數據平臺架構與原型實現:數據中臺建設實戰(zhàn)》一書現已由知名IT圖書品牌電子工業(yè)出版社博文視點出版發(fā)行,點擊《重磅推薦:建大數據平臺太難了!給我發(fā)個工程原型吧!》了解圖書詳情,京東購書鏈接:https://item.jd.com/12677623.html,掃描左側

    2024年02月13日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包