zoukankan      html  css  js  c++  java
  • 区分w3wp进程对应的应用程序池

    有时候多人共用一个开发环境,为了附加进程调试(设置程序分别对应两个应用程序池),但是两个应用程序池设置之后怎么区分?go

    1. 直接在dos里面输入 iisapp -a  弹出的提示点确定即可
    2. iis6 cd到system32目录dos输入:  cscript iisapp.vbs    iis7 cd到system32目录dos输入 %windir%/system32/inetsrv/appcmd list wp
    3. public static string GetAllW3wp(string input)

            {
                ObjectQuery oQuery = new ObjectQuery("select * from Win32_Process where Name='w3wp.exe'");
                ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oQuery);
                ManagementObjectCollection oReturnCollection = oSearcher.Get();

                string pid;
                string cmdLine;
                StringBuilder sb = new StringBuilder();
                foreach (ManagementObject oReturn in oReturnCollection)
                {
                    pid = oReturn.GetPropertyValue("ProcessId").ToString();
                    cmdLine = (string)oReturn.GetPropertyValue("CommandLine");

                    string pattern = "-ap \"(.*)\"";
                    Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
                    Match match = regex.Match(cmdLine);
                    string appPoolName = match.Groups[1].ToString();
                    sb.AppendFormat("W3WP.exe PID: {0}   AppPoolId:{1}\r\n", pid, appPoolName);
                }
                return sb.ToString();
            }

    对于 IIS6、IIS7,每个应用程序池都会创建一个 W3WP.exe 进程。并不是所有情况都是一个应用程序池对应一个 W3WP.exe 进程。 Web Garden或者一些异常发生时候,就会一个应用程序池对应多个 W3WP.exe 进程。

    什么是webgarden?

    IIS6 Web Garden 指的是一个应用程序可以成多个进程(w3wp.exe)来执行,一次请求使用其中的一个。用这个的主要目的是提高程序的可用性。当其中一个进程发生错误,那么也不会影响其他进程。发生错误的进程可以根据规则关闭,而其他的进程则可以继续工作。

      可惜不是每个应用程序都支持Web Garden的。一般来说 , 不支持 Web Garden 的原因是各应用程序的内存状态是不同的。虽然是访问同一个网站 , 当访问第一个进程时,进程的内存如果纪录了某些重要的信息,而当访问第二个进程的时,却无法再得到那些信息时,那么程序就不一定能运行正常,或者会发生错误。
     
      所以,一般使用 InProc HttpSessionState / HttpApplicationState / 静态变量来储存关键信息 的程序是不支持 Web Garden的。另外平时说Session信息丢失,也和这个有关。一般很多程序都使用Cache来储存临时数据,但如果某些被修改或删除的数据没有在该进程的Cache中得到更新,那么也会很容易导致程序出错。

    如果你希望应用程序支持Web Garden,甚至是支持集群,那么最简单的办法就是,尽量用Cookie来纪录登陆信息,以及所有的数据获取的动作都是从数据库中读取。不用session

    webgarden配置:在IIS 6.0的Web园中,我们不必创建额外的Web网站,只要指定用于某个应用程序池的工作进程的数量就可以了。具体的配置步骤是:打开应用程序池的“属性”对话框,转到“性能”页,在“Web园”下面的“最大工作进程数”输入框中输入进程数量,如图八。当服务器的负载较小,不需要额外的工作进程时,IIS 6.0在一定的时间后(默认20分钟,可配置)自动缩减实际的工作进程数量;如果负载变大,需要额外的工作进程,IIS 6.0再次增加工作进程数量。这一切操作都自动进行,不需要管理员干预

  • 相关阅读:
    IDEA debug漏洞第一篇(weblogic,cve-2017-10271)
    IDEA+docker,进行远程漏洞调试(weblogic)
    2019-2020-1 20199326《Linux内核原理与分析》第四周作业
    2019-2020-1 20199326《Linux内核原理与分析》第三周作业
    2019-2020-1 20199326《Linux内核原理与分析》第二周作业
    2019-2020-1 20199326《Linux内核原理与分析》第一周作业
    DEV插件下的控件Grid和Gridlookupedit控件的结合使用
    foreach循环的简单写法
    dev设置子窗体的初始位置,grid控件表头的属性设置
    C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值
  • 原文地址:https://www.cnblogs.com/shenqiboy/p/3081857.html
Copyright © 2011-2022 走看看