是否足以在共享托管服务器中运行我的asp.net MVC应用程序,内存限制为100 MB

时间:2012-09-06 08:02:34

标签: hosting

我最近使用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会话状态管理,因为您已创建数据库,有关更多信息,请花点时间查看以下Wi​​nHost知识库文章:

http://support.winhost.com/KB/a626/how-to-enable-aspnet-sql-server-session-on-your-web.aspx

如果您希望安装架构,请告诉我们。请注意,sql会话不会阻止您的应用程序池自动回收,而只会在回收发生时保留会话。

你能建议如何克服这个问题吗?

1 个答案:

答案 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

尝试顶级步骤。