我最近使用Asp.net MVC 4,Ninject,EF Poco,SQL 2008,Auto Mapper开发了MVC应用程序,并托管在winhost共享托管服务器中。 我的问题是会话到期。两个或三个寄托请求应用程序池被回收。
见下面的支持团队回复
我们将每个网站托管在其独特的应用程序池/流程中。为确保服务器稳定性,如果满足以下任何条件,我们将回收应用程序:
1)超过20分钟的空闲时间(20分钟内没有http请求) 2)该应用程序使用超过100 MB的内存 3)应用程序使用超过70%的CPU资源超过3.5分钟
我检查了我们的服务器日志,我确实找到了许多条目,其中您的应用程序池被回收,因为它开始消耗超过100 MB的服务器内存。以下是示例日志条目:
TimeGenerated:9/5/2012 10:03:36 PM 消息:已请求为应用程序池“customerPool_42717”提供进程ID为“30088”的工作进程 一个回收,因为它达到了它的私有字节内存限制。
TimeGenerated:9/5/2012 10:02:36 PM 消息:服务应用程序池'customerPool_42717'的进程ID为'315060'的工作进程具有请求 d一个循环,因为它达到了它的私有字节内存限制。
不幸的是,日志没有告诉我们你的应用程序正在做什么导致它消耗超过100 MB的服务器内存,它只记录它确实达到了内存限制。
出于安全性和性能原因,我们不允许在共享托管环境中监控我们的服务器资源。您可能希望评估应用程序在开发环境中使用的内存量,如果需求小于200MB,最简单的解决方案是将您的帐户升级到WinHost Max帐户,这将增加您的可用内存量工作进程为200MB或具有300MB专用RAM的WinHost Ultimate计划。
如果无法升级您的帐户,您可能需要考虑使用SQL Server会话状态管理,因为您已创建数据库,有关更多信息,请花点时间查看以下WinHost知识库文章:
http://support.winhost.com/KB/a626/how-to-enable-aspnet-sql-server-session-on-your-web.aspx
如果您希望安装架构,请告诉我们。请注意,sql会话不会阻止您的应用程序池自动回收,而只会在回收发生时保留会话。
你能建议如何克服这个问题吗?
答案 0 :(得分:0)
好的!,清除你的机器asp.net root tmp文件夹:
我一步步这个问题的答案:
1)以管理员命令Promt运行
2)iisreset /stop
3)在资源管理器中打开
%windir%\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root
或
%windir%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
,并删除所有临时文件夹。
4)返回cmd,然后iisreset /start
5)对于Web服务器CPU问题,或清除系统驱动器清理(您的用户本地临时文件和%windir%\Temp
文件)
6)如果您的IIS无效(返回错误代码:509,503,...)
a)iisreset /stop
b)cd %windir%\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root
或
cd %windir%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root
c)aspnet_regiis -iru
d)iisreset /start
尝试顶级步骤。