【发布时间】:2012-04-22 13:17:41
【问题描述】:
在生产环境中,我有一个 IIS 托管的 asp.net 应用程序,实际上是许多 Web 应用程序。每个应用程序都会消耗大量内存,但目前限制它的唯一方法是回收(nHibernate 似乎正在泄漏内存,并且它正在创建大量的字符串集合)。问题是在回收之后它会不断注销用户还是放弃会话?在本地计算机上,我无法重现该问题。我试过使用状态服务器,但没有成功,问题还在继续,SQL 状态保存会改变什么,还是我只是错过了铅或错过了什么?
【问题讨论】:
-
我们在大型应用程序中遇到了这个问题。回收工作进程确实会导致附加会话失去其身份验证,我们正在使用状态服务器和负载平衡的粘性会话。我们确信,使用 IE6 和 32 位 IIS6 可以解决问题,更改任何一个都会改善问题。看到您在使用 IIS7 时遇到同样的问题令人失望,我得出的结论是 SQLServer 会话数据库可能是解决它的唯一方法。但是:您使用的是 32 位还是 64 位服务器?
-
非常有趣的安德鲁!我在 64 位上运行它,并且在某个时候,我尝试了 Microsoft MVP 之一的建议,以强制工作进程在 32 位上运行,但结果虽然起初很有希望,但最终却是灾难性的。进程崩溃随机丢失所有数据并混淆了我们的数据库(实际上是崩溃导致的ORM故障)