Tag: 应用程序池

诊断asp.net网站/应用程序池的性能

我对使用ASP.Net/C#开发的网站存在问题,有时会无限期地占用所有CPU使用率(100%)。 你有什么想法/提示怎么会导致这样的资源匮乏? 该网站仍在响应,因此它没有崩溃或类似的东西。 我有点无能为力从哪里开始! 谢谢!

如何检测我当前运行的应用程序池? (IIS6)

我需要知道如何检测我正在运行的当前应用程序池,因此我可以通过编程方式对其进行回收。 有谁知道如何为IIS6做这个? 我目前用于回收应用程序池的代码是: /// /// Recycle an application pool /// /// public static void RecycleAppPool(string IIsApplicationPool) { ManagementScope scope = new ManagementScope(@”\\localhost\root\MicrosoftIISv2″); scope.Connect(); ManagementObject appPool = new ManagementObject(scope, new ManagementPath(“IIsApplicationPool.Name=’W3SVC/AppPools/” + IIsApplicationPool + “‘”), null); appPool.InvokeMethod(“Recycle”, null, null); }

Preload()的不稳定行为

我在Windows Azure中托管了一个WCF应用程序。 它有IIS v8.0 我已经使用IProcessHostPreloadClient’s Preload()方法进行应用程序预热 现在,我有两个问题: 1)每当我的应用程序池回收时, Preload()函数被调用两次。 我在preload()方法中初始化了一些静态变量,这些变量将在我的工作进程(w3wp.exe)保留。 我所看到的很有趣: 我当前的工作进程ID是( w3wp.exe 1234 ,比方说) 在回收时, preload被调用两次: 第一次:在w3wp.exe中有进程ID : 5678 ,说(一个新的工作进程) 第二次:在w3wp.exe中有进程ID: 1234 (与现有的相同) 现在,我已经配置了我的应用程序池,以便只存在一个w3wp.exe实例。 因此,在发生循环之后,存在的w3wp.exe是进程ID:5678。 我的问题是,为什么一个进程号为1234的死亡w3wp.exe已经执行了预加载 两者之间有3毫秒的差距。 编辑我刚刚了解到,由于应用程序池循环,一个旧的w3wp.exe终止并启动了一个新的w3wp.exe。 导致preload被调用两次的原因是: 1)w3wp.exe的新进程 – 导致在新进程上调用preload()(在我们的示例中为进程ID:5678) 2)w3wp.exe的旧进程(进程ID:1234):其app-domain在被杀死之前重新启动。 因此,当重新启动app域时,会调用preload() 现在,我的问题是为什么一个垂死的w3wp.exe的app-domain重新启动了。 它在接下来的3ms内即将死亡(如上所述) 2)我已经启动了服务,我正在做一些测试。 在此期间,工作进程有时没有提供任何请求。 但我的w3wp.exe有一个连续运行的线程。 我们在一段时间后观察到的是, w3wp.exe的现有实例(进程ID 1234,比如说)突然结束,并且在同一进程中调用了preload()(进程号为1234的w3wp.exe ) 我假设的是,由于某种原因,再次调用预加载。 我曾经认为只有在创建新的w3wp.exe时才会调用preload(反过来意味着app pool已经回收) 这种行为被观察了两次任何人都可以告诉我任何事情 编辑 答案:偏爱:因为app-domain重启。 我仍然不知道为什么app-domain重新启动

同一AppPool中的应用程序之间的共享变量?

我正在使用Asp.net FW 4.6。 我在同一个应用程序池下有两个应用程序需要读取(持续)预定义的值,该值是要更改的对象。 静态变量不能用于beucase不同的应用程序(即使在相同的应用程序池下) – 也不会被共享。 DB / File / Server是已知选项。 但是: 题 : 是否有任何我可以编写的代码可以存储在mem值中,这些代码可以通过同一App Pool下的多个应用程序访问? 就像是 : MyAppPool App1 -> func(“royi”) = 1 App2 -> var a= func2(“royi”); //1