asp.net mvc 4应用程序&x27;预编译';

asp.net mvc 4应用程序&x27;预编译';,asp.net,asp.net-mvc,deployment,Asp.net,Asp.net Mvc,Deployment,我有一个asp.net mvc4应用程序,我们部署到大约1400个客户端。我们当前的部署过程如下所示: :: Publish the project files to a local directory %msbuild% RPortal.csproj "/p:Platform=AnyCPU;Configuration=Release;ConfigurationName=Release;SolutionDir=%solutionDir%;PublishDestination=.\Deploy\R

我有一个asp.net mvc4应用程序,我们部署到大约1400个客户端。我们当前的部署过程如下所示:

:: Publish the project files to a local directory
%msbuild% RPortal.csproj "/p:Platform=AnyCPU;Configuration=Release;ConfigurationName=Release;SolutionDir=%solutionDir%;PublishDestination=.\Deploy\Release" /t:PublishToFileSystem
然后我们有一些powershell脚本,它们使用其他工具帮助同步,将新构建推送到我们的每个客户端

我们注意到应用程序启动时间(有时超过5分钟)会出现一些服务器缓慢的情况,我们研究的解决方法之一就是ASP.Net预编译()

在这个想法的一些实验中,似乎在我们发布的系统上调用
aspnet\u compile.exe
,实际上会创建一些新文件。(两个DLL和一些*.compiled文件)

我的问题如下:

  • 此编译与.cs源代码的主编译有何不同 档案
  • 这种编译是在第一次运行时进行的,还是仅在手动运行时进行的
  • (与2相关),此编译是否在应用程序池重新启动和服务器重新启动后仍然有效
  • 在我们当前的场景中,似乎我们正在杀死我们的服务器,试图启动1400个应用程序(是的,它们都生活在1个Web服务器上……我无法控制这种情况)。服务器将运行良好,没有特别的问题,合理的资源消耗,然后,突然之间,我们的CPU将固定在100%并保持不变。我们唯一可以将其联系起来的因素是,当1400个应用程序中的5个(或更多)都启动时,就会发生这种情况

    我们的希望是预编译将提前加载大部分应用程序启动负担,但我显然不明白这里到底发生了什么


    如果您有一个应用程序部署到单个服务器上的1400个客户端,我会认真重新考虑您的应用程序设计,而不是设计一个使用单个应用程序的系统,该应用程序可以为每个客户端自定义自身(这称为多租户体系结构)。通常,这种类型的应用程序利用主机头或路由信息来选择如何向客户端显示信息。通过这样做,您只需要处理一个应用程序,这个问题就消失了。谢谢您,@ErikFunkenbusch。从长远来看,我们正在为此进行规划,但我们的资源已经过度投入,而且我们在相当长的一段时间内还不能走这条路。我正在寻找我现在可以做的事情,除了实际的应用程序代码之外,这将对应用程序启动时间产生明显的影响。在我看来,最便宜的解决方案应该是更多的硬件。硬件很便宜。我的意思是,你花在解决这个问题上的钱可能比花在一打盒子上的钱还多……这也是事实。但是,正如我提到的,我无法控制这个细节。我能控制的是代码和一些部署内容。所以,我希望尽我所能优化。