问题标签 [warm-up]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 如何在 IIS 7.5 上预热 ASP.NET MVC 应用程序?
我们想要预热托管在 IIS 7.5 服务器上的 ASP.NET MVC 应用程序。过去在http://forums.iis.net/t/1176740.aspx上提供的热身模块已被删除。
每次 IIS 或 ASP.NET 工作进程因任何原因重新启动时,都应预热应用程序。在预热期间,IIS 应返回一些 HTTP 状态代码,表示其预热状态或无法为任何客户端提供服务。
创建一个通过 HttpRequests 浏览站点中必要页面的可执行文件是个好主意吗?可执行文件可以从 IProcessHostPreloadClient 实现触发。是否可以将 IIS 配置为仅接受来自 localhost 的请求,并且一旦可执行文件完成,它就可以切换到所有客户端 - 但该切换不应触发 IIS 重新启动(显然)。
是否可以使用 Visual Studio 2010 - Web 性能测试来预热应用程序而不是创建手动可执行文件?还有其他选择吗?
PS:应用程序使用表单身份验证并使用会话 - 因此维护状态 cookie 和其他 cookie 很重要。
更新 1 - 我们在我们的应用程序中使用 .NET Framework 4.0 和 Entity Framework(数据库优先)。EF 查询的第一次命中很慢。热身背后的原因是为了让这些第一次击球不碍事。我们已经在大多数地方使用编译查询,并且我们已经为 EF 实现了预编译视图。模型和应用程序的大小非常庞大和复杂。预热需要遍历许多页面,以确保在任何最终用户访问应用程序之前,已编译和未编译的 EF 查询至少执行一次。
c# - 在 IIS 预热步骤中预加载 ASP.NET MVC 视图
IProcessHostPreloadClient
我最近开始玩弄 IIS 通过使用界面将预热步骤应用到我的 Web 应用程序的能力(在此处查找有关如何设置的指导)。这效果很好,或者至少我认为它确实如此,因为我做的一件“聪明”的事情是尝试通过迭代我的控制器并渲染它们来预加载我的视图。
经过一番反复试验,我让它工作了,一切都很好。也就是说,直到我注意到我的系统的所有验证都不再有效,无论是客户端验证还是服务器验证。我假设当 MVC 第一次检索视图时验证通常与视图相关联,但我没有这样做。有谁知道如何将其包含在我的解决方案中或以其他方式完成?
编码:
asp.net-mvc - 什么是“IIS 模拟 HTTP 请求”?
有人知道我在哪里可以找到有关System.Web.Hosting.IProcessHostPreloadClient标识的 IIS 模拟 HTTP 请求功能的详细信息吗?
我正在尝试执行“通常”的 ASP.NET 站点预热操作,以确保在应用程序池回收后快速响应时间,类似于如何在 IIS 7.5 上预热 ASP.NET MVC 应用程序?
我在用着:
- 视窗服务器 2008 R2
- IIS 7.5
- .NET 4.0
- ASP.NET MVC 3
IProcessHostPreloadClient 文档中的注释(见上面的链接)明确指出:
此接口主要供非 HTTP 应用程序的 WCF 应用程序使用。想要预加载 ASP.NET Web 应用程序的 ASP.NET 开发人员应该使用 IIS 7.0 中的模拟 HTTP 请求...
请注意,这个问题与 IProcessHostPreloadClient 无关,我已经成功实施并启动了一个 HttpWebRequest 来预热我的网站;它本质上与一个类似的问题相同,该问题又在网络上有几个其他的重复/转发,但从未真正得到回答。
其他(明显的)红鲱鱼:
- 一个 IIS“应用程序预热模块”(http://forums.iis.net/t/1176740.aspx),它不再可用,似乎是一个插件而不是核心功能。
- aspnet_compiler,它不会触发 Application_Start。
任何帮助将不胜感激。
java - 相同的代码,相同的输入,有时运行快,有时运行慢,为什么?
我写了一些 java 类来评估/演示不同的排序算法。但是,当我运行我的演示课时,我感到很困惑。希望大家能给我一个解释。(这个问题不是作业。)
首先,我将列出一些与此问题相关的代码。
抽象演示
排序演示
跑表
生成随机数组的方法
你可以看到,我生成了一个包含 20000 个元素的 int 数组。因为我在 getRandomIntArray 方法中有一个固定的种子,所以每次调用它时我总是有相同的数组。SortingDemo 类有 main 方法,如果我运行这个类,我会得到输出:
看起来不错。现在出现了让我感到困惑的事情。如果我在 SortingDemo 中更改 demoList.add() 序列,请说:
我有:
为什么输出与第一次运行不同?OptimizedMergeSort 花费的时间比正常的 MergeSort 长...
如果我for (int x=1; x<6; x++)
在 SortingDemo 中取消注释该行,(使用相同的 Array 运行测试 5 次)我得到:
对于其他排序,结果看起来很合理。但是对于mergeSort,为什么第一次运行比以后花费更长的时间?OptimizedMergeSort 为 37 毫秒:4 毫秒。
我认为即使 Optimized/MergeSort 的实现是错误的,输出应该保持不变,为什么有时相同的方法调用需要更长的时间,有时更短的时间?
作为信息,所有这些 *Sort 类都扩展了一个超级抽象类 Sorting。它有一个抽象方法void sort(int[] data)
MergeSort 有mergeSorting
方法和 merge() 方法。OptimizedMergeSort 扩展了 MergeSort,并覆盖mergeSorting()
了方法,(因为当数组大小<=7 时,它会进行插入排序)并重用类中的merge()
方法MergeSort
。
感谢您阅读这么长的文本和代码。如果你们能给我一些解释,我很感激。
所有测试都是在 Eclipse 下的 linux 下完成的。
caching - 什么是暖缓存?
在热缓存中运行程序是什么意思?
谁能好心解释一下。
暖缓存是否意味着..查询时缓存命中的缓存?
asp.net - ASP.NET 预热/初始化
我正在尝试消除(或至少最小化)我的 .NET 应用程序的启动/预热时间。即使这是一个普遍的问题,我也不确定如何做到这一点。
有很多关于 .NET 应用程序启动缓慢的问题。这些很容易通过池回收、工作进程启动、.aspx 文件的动态编译、JIT 等来解释。此外,在应用程序中可能需要初始化更多的东西,例如 EntityFramework 和应用程序缓存。
我发现了很多不同的解决方案,例如:
但是,我对上述任何解决方案都不完全满意。此外,我将我的应用程序部署到 Azure 网站(在大多数情况下),因此我对 IIS 的访问权限有限。
我知道有一些自定义的“预热脚本”使用各种方法向应用程序发送请求(例如 wget/curl)。我的想法是在我的每个 ASP.NET 应用程序中创建一个“Warmup.aspx”页面。然后我有一个预热服务,它每 5 分钟向每个站点的 Warmup.aspx 发送一个 HTTP GET。此服务可以是 Azure 中的 WorkerRole 或本地安装中的 Windows 服务。Warmup.aspx 将执行以下操作:
- 向应用程序中的每个 .aspx 文件发送 HTTP GET(以动态编译页面)
- 这可以通过使用 aspnet_compiler.exe 预编译 .aspx 页面来避免
- 向数据库发送查询以初始化 EntityFramework
- 初始化应用程序缓存等
所以,我的最后一个问题是是否有比我的“Warmup.aspx”脚本更好的替代方案?这是一个好方法还是您推荐其他方法?我真的很想要一些可以处理上述标准的官方方法。
欢迎任何和所有的建议,谢谢!
java - 我们需要运行多少次 Java 程序来预热 JVM?
假设我有一个 Java 程序Test.class
。我想测量它的执行时间。我写了一个包装器来做到这一点,如下所示:
这里怎么选warmupNum
,越大越好?多大才够?这是衡量 Java 程序性能的“标准/通用”方法吗?
java - 在 GAE 中服务请求之前没有预热
为什么 AppEngine 使用冷动态实例来处理我的请求,而没有事先预热?
我有一个使用 Spring Security 和 Spring MVC 的 Web 应用程序,因此初始化上下文需要很多时间,两者都大约 70 秒。因此,我将初始化分为两个阶段,其中预热请求仅初始化我的应用程序上下文(安全性),而 Spring Dispatcher Servlet 在下一个请求时被初始化。这使时间保持在最大 60 秒以下。
现在,在我的生产环境中,由于某种原因,两个常驻(空闲)实例中的任何一个都没有为客户端请求提供服务,而是由一个新的冷实例提供服务。然后这个实例需要初始化security,dispatcher servlet并服务于请求,这在60s后被中断。
最小挂起延迟设置为 500 毫秒,最大设置为 15 秒,以尽可能避免使用冷实例提供服务,但这种情况在没有显着负载的情况下发生。
asp.net - 用于 ASP.NET Web 服务(预热)的 IIS 7.5 应用程序初始化,无需重新映射请求
我正在尝试使用 IIS 7.5 应用程序初始化扩展来为我的 Web 应用程序配置预热过程。这是我正在采取的一种方法,以最大程度地减少由应用程序池回收引起的减速,这个问题在 Stack Overflow 上的其他问题中得到了很好的解释。
我想要的是获得应用程序初始化的好处,而无需在其他任何地方重新映射请求。
到目前为止我所做的
我按照基本用例的IIS 8 说明进行操作,效果很好!我创建了一个名为 app_starting.htm 的启动页面,并通过使用此代码,在应用程序初始化时显示它:
为什么这不好
我想使用初始化来加快对使用 ASP.NET MVC 编写的基于 REST 的 Web 服务的请求。此 Web 服务是多个应用程序的后端。当他们向资源(即/client/1/addresses
)发出请求时,他们无法处理接收启动页面。
我试过的
我删除了该remapManagedRequestsTo
属性。但是,现在当我在初始化期间请求资源时,我会收到 500 错误,直到初始化完成。之后,响应恢复正常。依赖此服务的应用程序也不会很好地响应 500 错误,因为初始化不应该是错误条件。
我需要的
在不执行任何重新映射的情况下,我希望请求行为恢复正常。即使初始化正在进行中,对应用程序的其他请求也应该排队等待直到初始化完成。
有什么我想念的吗?我能做到这一点吗?
谢谢您的帮助!
iis-8 - IIS 8 应用程序初始化 - 预热 WCF 服务
我们目前正在使用 AppFabric 自动启动功能来预热包含 WCF Web 服务的应用程序。
由于这是我们正在使用的唯一 AppFabric 功能并且我们正在升级到 IIS 8.0,因此我们希望改用应用程序初始化。
1)很高兴知道这些解决方案之间是否存在任何已知差异。
2)我能够为示例项目设置初始化: http ://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization 。但是当我为我的 WCF 服务设置相同的设置时,没有预热。我认为这是因为热身是通过发出请求来完成的
这实际上并没有达到服务。我需要完成预热请求
有没有办法配置这个?