C# 在程序中控制IIS服務或應用程序池關閉重啓

//中止IIS服務
ServiceController sc = new ServiceController("iisadmin");
if(sc.Status=ServiceControllerStatus.Running)
     sc.Stop();

//重啓IIS服務
ServiceController sc = new ServiceController("iisadmin");
 sc.Start();

//重啓進程
using System.Diagnostics;
Process.Start("iisreset");

IIS應用程序池假死問題和自動重啓方法

網絡上有關iis的問題和相關解決方案,多不勝數,但不少都比較零散,沒有系統的解決方案;另外,有些解決方法,似是而非,不能找到其中的問題關鍵點,本文對咱們遇到的問題和解決方法,特別是對iis的特殊權限引發問題、iis應用程序池假死問題和比較罕見的iis重啓命令和自動重啓辦法。
  1、2003應用程序池自動死了,不能恢復了,一直出現 Service Unavailable 常見方法以下。
  一、從IIS6.0開始CPU資源都在應用池裏面限制了,不象之前的IIS.5。因此假死的池的緣故就是池被拉死,你在網站打不開的時候能夠看到你的某個應用池是禁用的,上面出現一個紅叉。你鼠標右鍵啓動網站又會自動恢復。 這個緣由大概是如下幾個因數形成的:
  (1)、你限制了應用池的資源,限制得過小 好比:50這樣或更少更多一點,這個時候若是你這個池下面的網站佔用CPU過高,好比超過50% 那麼5分鐘後他就自動死了,手工默認創建的應用池默認是超過資源不操做。 出現上面這個狀況解決方法:1:不限制CPU資源,(這個是不可取的,不限制資源,有的程序有BUG佔用資源厲害了的,服務器都會被拉死,你可能都沒法操做服務器。)2:在超過資源那裏選擇關閉,這個關閉默認是失敗5次,90秒內恢復,通常默認就可。網站能自動恢復,這個關閉:不是永久關閉,意思是超過資源關閉,而後在某時間內自動恢復池。不操做就是不恢復,這個是不少人的誤區。
  (2)、內存限制 在IIS6.0應用池上面有虛擬內存和最大內存限制,若是你設置了這個。那麼網站訪問量大了 也會出現假死,因此不建議設置這裏,默認就可。
  二、就是ACCESS數據庫太大或查詢太多,這個也會出現把IIS拉死,解決方法;修復ACCESS數據庫,或儘可能少用ACCESS數據庫,升級至sqlserver數據庫;或者在技術方面革新,像如今有些網站系統,風訊、動易等cms;pjblog、zblog等博客程序,都支持生成靜態功能。
  三、就是服務器自身內存過小,網站運行固然須要使用到內存了,當內存不夠的時候應用池也會死掉變成禁用。那麼只有等內存所有釋放出來才能恢復應用池了。出現這個狀況:那麼你就要考慮加內存或者檢查究竟是什麼程序佔用了內存了。好比MSSQL數據庫,這個但是吃內存得大戶啊,最好別和WEB服務器同時一個服務器上。不少人用1G內存作 2003系統,2003NET結構是很佔用內存的,因此作服務器選2003還得把內存加到2G或更高才好。 內存不夠,上面 1點講到的,是沒辦法操做了,也沒法自動恢復。
  四、沒有打SP1補丁的時候會出現這個IIS6.0假死問題,但如今微軟都在自動更新裏面出補丁了,通常你打好最新補丁後是不會出現此問題了。(因此如今的IIS假死與這個關係不是很大)
  五、不一樣網站用不一樣應用池:根據你本身實際狀況而定,站點大的最好獨立一個應用池,限制他的資源超過了自動回收,看上面(1)講到的,這樣就不影響其餘站點。中型站點:多個網站共用一個應用池,好比5個站點用一個池,設置他資源時間等等。這樣他們就算超資源了也不影響其餘應用池的網站。
  六、設置回收時間:不少人覺得設置回收池越短越好,實際上是錯誤的,每次回收固然是把內存回收回來了,但加劇了一次服務器的負擔,當服務器比較繁忙的時候,有可能致使其餘應用池死。因此建議設置共1000就好了。其餘獨立池按照他網站流量而設置 能夠設置600 也行,共用的不建議設置過短。
  七、網站後臺過不了多久自動退出又要從新登錄:這個狀況就是你設置回收時間過短了,按照 6點設置吧。 不要設置什麼20分、30分這樣的,這樣很差的。另一個緣由就是和站的響應設置時間有關,設置得稍長些。
  八、windows 2003系統iis6訪問本機的站點時提示「Service Unavailable」; 查看iis的應用程序池,情況提示爲:未指定錯誤,同時應用程序池自動中止運行;
  用事件查看器查看系統錯誤日誌,發現以下提示:
  ------------------
  應用程序-特定 權限設置未將 COM 服務器應用程序(CLSID 爲 {A9E69610-B80D-11D0-B9B9-00A0C922E750} )的 本地 激活 權限授予用戶 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可使用組件服務管理工具修改此安全權限。
  解決方法,給NETWORK SERVICE 加上訪問iis服務的權限,具體方法以下:
  點擊「開始」-「控制面板」-「管理工具」-「組件服務」-「計算機」-「個人電腦」-「DCOM」選項, 選擇其下的「IIS ADMIN SERVICE」,右健選擇「屬性」,找到「安全」,在「啓動和激活權限」中編輯「自定義」,添加賬號「NETWORK SERVICE 」,給該賬號賦予「本地啓動」和「本地激活」的權限,從新啓動IIS以後再訪問同一站點,則一切正常。
  九、重啓IIS中的特定應用程序池命令和自動重啓的方法
  在操做系統是Windows server 2003 SP1+的狀況下,能夠用如下命令部分重啓IIS應用程序池:
  cscript.exe c:\windows\system32\iisapp.vbs /a "DefaultAppPool"
  其中/a 表明alternatively,"DefaultAppPool"表明應用程序池的實例名。若是要設置自動重啓這個應用程序池,能夠嘗試放在批處理中,用計劃任務調用此批處理便可。不少人以爲計劃任務不安全,都要禁掉,事實上,計劃任務的不安全是創建在其它方面不安全的前提上的,若是因爲其它方面的不安全,被放入執行程序,計劃任務執行,這和計劃任務沒有直接關係。固然,關掉,是會減小一些安全隱患,這是不錯。html

 

本文轉自:https://www.cnblogs.com/hnsongbiao/p/7223748.htmlsql

相關文章
相關標籤/搜索