当前位置: 首页 > 编程语言 > C#

Preload()的不稳定行为分享

时间:2023-04-10 20:13:26 C#

Preload()的不稳定行为我在WindowsAzure中托管了一个WCF应用程序。它有IISv8.0我已经使用IProcessHostPreloadClient的Preload()方法进行应用程序预热现在,我有两个问题:1)每当我的应用程序池回收时,Preload()函数就会被调用两次。我已经在preload()方法中初始化了一些静态变量,这些变量将在我的工作进程(w3wp.exe)中持续存在。我看到的很有趣:我当前的工作进程ID是(w3wp.exe1234,比方说)在回收时,预加载被调用两次:第一次:在w3wp.exe中有进程ID:5678,比如说(一个新的工作进程)第二次时间:在w3wp.exe中有进程ID:1234(与现有进程相同)现在,我已经配置了我的应用程序池,以便只存在一个w3wp.exe实例。所以,在循环发生后,存在的w3wp.exe是进程ID:5678。我的问题是,为什么进程ID为1234的死w3wp.exe执行了预加载,两者之间有3毫秒的差距。编辑我刚刚了解到,由于应用程序池循环,旧的w3wp.exe终止并启动新的w3wp.exe。导致preload被调用两次的原因是:1)w3wp.exe的一个新进程——导致preload()在新进程上被调用(在我们的例子中进程ID:5678)2)w3wp.exe的旧进程(processID:1234):它的应用程序域在被杀死之前重新启动。因此,当应用程序域重新启动时,会调用preload()。现在,我的问题是为什么要重新启动垂死的w3wp.exe的应用程序域。它会在接下来的3毫秒内消失(如上所述)2)我已经启动了服务并且正在做一些测试。在此期间,工作进程有时不处理任何请求。但是我的w3wp.exe有一个连续运行的线程。一段时间后我们观察到的是w3wp.exe的现有实例(进程ID1234,比如说)突然结束并且在同一进程(进程ID1234的w3wp.exe)中调用了preload()我假设事情是,对于出于某种原因,再次调用预加载。我曾经认为只有在创建新的w3wp.exe时才会调用预加载(这反过来意味着应用程序池已被回收)这种行为已经观察到两次谁能告诉我任何事情编辑答案:偏好:因为应用程序域重启.我仍然不知道为什么应用程序域正在重新启动。以上就是《C#学习教程:UnstablebehaviorofPreload()》的全部内容。整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: