• 区分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再次增加工作进程数量。这一切操作都自动进行,不需要管理员干预

  • 相关阅读:
    【python安装】错误——“User installations are disabled via policy on the machine”
    “金字塔原理”-写作
    【sublime】Pretty Json插件的安装与配置使用
    VMware卸载后再安装时网络连接处没有虚拟网卡
    2019-2020-2《网络对抗技术》Exp4 恶意代码分析
    2020课程设计 Week1 Asn.1格式的学习
    基于BouncyCastle的asn.1分析工具设计与实现的任务理解与分工
    2019-2020-2《网络对抗技术》Exp3 免杀原理与实践
    2019-2020-2 《网络对抗技术》Exp2 后门原理与实践
    2019-2020-2《网络对抗技术》Exp1 PC平台逆向破解
  • 原文地址:https://www.cnblogs.com/shenqiboy/p/3081857.html
Copyright © 2020-2023  润新知