加入收藏 | 设为首页 | 会员中心 | 我要投稿 南平站长网 (https://www.0599zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

Asp.net 检测IIS工作进程死锁并回收应用程序池

发布时间:2022-11-16 16:02:17 所属栏目:Asp教程 来源:未知
导读: Asp.net 检测IIS工作进程死锁并回收应用程序池
asp.netiispowershell
Asp.net 检测IIS工作进程死锁并回收应用程序池,asp.net,iis,powershell,deadlock,application-pool,Asp.net,Iis,Power

Asp.net 检测IIS工作进程死锁并回收应用程序池

asp.netiispowershell

Asp.net 检测IIS工作进程死锁并回收应用程序池,asp.net,iis,powershell,deadlock,application-pool,Asp.net,Iis,Powershell,Deadlock,Application Pool,是否可以使用powershell检测IIS工作进程线程死锁,然后触发应用程序池回收原因:我有一个在GAC中调用程序集的网站,该程序集有时只是将线程保持在死锁状态,唯一的修复方法是在IIS中回收该网站的应用程序池,令人恼火的是,在我被告知之前,用户必须注意到它,最好将此过程自动化。我将这样做。首先,我们必须找到一种方法来检测线程是否死锁。我猜你可以用像ping这样简单的方法来实现。然后我们必须回收应用程序池# Load IIS module:Import-Module WebAdminist

是否可以使用powershell检测IIS工作进程线程死锁ASP程序,然后触发应用程序池回收

原因:我有一个在GAC中调用程序集的网站,该程序集有时只是将线程保持在死锁状态,唯一的修复方法是在IIS中回收该网站的应用程序池,令人恼火的是,在我被告知之前,用户必须注意到它,最好将此过程自动化。

我将这样做。首先,我们必须找到一种方法来检测线程是否死锁。我猜你可以用像ping这样简单的方法来实现。然后我们必须回收应用程序池

# Load IIS module:
Import-Module WebAdministration

# Set a name of the site we want to recycle the pool for:
$site = "Default Web Site"
# Get pool name by the site name:
$pool = (Get-Item "IIS:\Sites\$site"| Select-Object applicationPool).applicationPool

#Check to see if the site is deadlocked.
if(!(Test-Connection -ComputerName Server -Quiet))
{
    #Site is Deadlocked. Recycle the application pool:
    Restart-WebAppPool $pool
}

这几乎是不可能的,因为IIS没有为此公开任何API。如果你真的想实现它,你需要利用原始的Win32 API,这对于基于PowerShell的解决方案来说是相当困难的。奇怪的是,除了当用户转到调用另一个程序集的特定页面时,网站工作正常,所以从技术上讲,不是工作进程死锁,这只是管道中的一些线程。(通过Resource Monitor-Analysis Wait Chain发现)听起来您需要找到其他程序集的问题,或者让您的代码启动一个看门狗计时器,以便在10秒后没有收到任何请求时,抛出一个错误或可以捕获和处理的内容,或者类似的内容(请参阅:)。问题是,如果没有大量代码,很难在线程级别检测死锁进程。例如,要使用等待链遍历API(即您如何检测到它),请参见以下内容:

(编辑:南平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!