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

相关文章
相关标签/搜索