问题标签 [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.
azure - 部署后 Azure Web 角色预热
正如此处各种其他相关问题中所述,我还期望在(重新)部署具有相当大的 EF6 模型和大量引用的 nuget 包的 Web 角色后,第一次调用会持续很长时间(30 秒)。在尝试了不同的建议解决方案之后preloadEnabled
,serviceAutoStartProviders
我仍然感到困惑并决定重新打开这个话题,希望有人在此期间找到更好的解决方案。
我的主要目标是让 Web 角色在新部署中退出其忙碌状态并可由负载均衡器和外部客户端访问时,几乎与后续调用一样快地响应第一个请求。不幸的是,到目前为止,我在提出的解决方案中遇到了以下问题:
preloadEnabled
:- 我确实
PKGMGR.EXE /iu:IIS-ApplicationInit
在启动任务中添加了应用程序初始化模块。到目前为止,一切都很好。 - 然后,当我尝试执行
%windir%\system32\inetsrv\appcmd set site "MySiteName" -applicationDefaults.preloadEnabled:true
它时,它会失败,因为在执行启动脚本时仍然没有在 IIS 中创建新部署的网站。 - 如果我尝试
ServerManager
在我的方法中通过 -class设置 preloadEnabled 设置Application_Start
,我无法理解,在对 web 角色进行第一次外部调用之前,如何执行此代码,因为 preloadEnabled 设置默认为 false 之后一个新的网络角色部署,因此我理解的 Application_Start 方法没有机会被应用程序初始化模块执行?
- 我确实
serviceAutostartProviders
:- 在这里,我们需要
IProcessHostPreloadClient
在 applicationhost.config 中放置实现接口的 AutostartProvider 的名称,即使用 appcmd 脚本或 ServerManager 类,但是:- serviceAutostartProvider 就像 preloadEnabled 一个与站点相关的设置,所以我们在这里遇到与
%windir%\system32\inetsrv\appcmd set site "MySiteName" -applicationDefaults.preloadEnabled:true
1.2 中相同的问题 - 在全新部署后的启动脚本执行时,网站尚未在 IIS 中创建并且脚本无法正确执行 - 另一种可能性是将 applicationhost.config 包含到部署包中,但我没有找到任何解决方案来为 Web 角色执行此操作。
- serviceAutostartProvider 就像 preloadEnabled 一个与站点相关的设置,所以我们在这里遇到与
- 在这里,我们需要
那么你们是如何设法确保在角色第一次从外部受到攻击之前运行预加载程序集和一些初始化代码(如填充内存缓存)?
我们现在开始获得一些流量并获得大约。我们的 WebApi 上每秒有 1-2 个请求,因此在每次更新部署后预加载对客户端“可见”的 30 秒延迟现在已成为一个主要问题。
我们在低流量时间安排更新部署,但如果我需要进行紧急修补程序部署怎么办?
java - 以编程方式启动 appengine 自动缩放实例
appengine api 中是否有任何方法可以以编程方式重新启动实例或使其停止,以便 appengine 生成另一个服务器实例?原因是在我们应用servlet,warmpup servlet初始化过程中,由于一些网络错误,一些服务没有正确初始化。这会在请求到达时导致错误。我们想知道我们应该如何处理这个问题?有没有办法处理预热 servlet 初始化异常并让容器知道,以便它会产生另一个。
java - 如何从后端运行 Google 应用引擎端点方法
我在我的应用程序引擎项目中遵循了我的 WarmupServlet 的所有配置步骤,我看到它在启动时运行,但我仍然看到我的第一个端点调用是一个加载请求,它需要长达 25 秒,这是绝对不可接受的。我需要能够单独预热每个端点,这样就不会有加载请求。(显然,仅仅设置一个预热 servlet 是不够的。)所以,我的问题是,我怎样才能在端点中调用一个方法,以便正确预热端点以从我的 WarmupServlet 提供服务?我在下面尝试但没有成功:
在哪里
matlab - Jenkins - 如何让 Matlab 热身
我在一个用 Matlab 编写的项目上运行 Jenkins。我的构建脚本正在使用必要的参数启动 Matlab 以运行构建脚本并退出。
由于 Matlab 是一种解释性语言,连续运行速度要快得多,所以我试图找到一种方法来运行 Matlab 并保持它对未来的测试开放。
我也不认为这个问题只与 Matlab 有关,Java 也是如此。
所以问题是:有没有办法让进程(在我的例子中是 Matlab)为未来的测试运行开放?
欢迎回答有关 Java 或其他解释语言的解决方案。
asp.net - 使用 ASP.NET Application_Start 进行热身是否有任何反对意见?
有人知道使用 ASP.NET 方法 Application_Start 进行应用程序预热有任何反对意见吗?
特别是对于 Web 服务,通常需要预加载文件、缓存算法等。
存在:
- Service Auto Start Providers, serviceAutoStartProvider, https://weblogs.asp.net/scottgu/auto-start-asp-net-applications-vs-2010-and-net-4-0-series,我们需要的地方:
serviceAutoStartProvider
用具体的程序集名称注册新的。- 分配
serviceAutoStartProvider
给 IIS 应用程序。 - 将 IIS 应用程序配置为 AlwaysRunning。
- IIS 8.0 应用程序初始化,https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-application-initialization
- 分配
initializationPage
给 IIS 应用程序。 - 将 IIS 应用程序配置为 AlwaysRunning。
- 分配
但是,这两种方法都需要更改每个应用程序的 IIS 配置,这在多对多应用程序的情况下会让人不舒服,并且在发布时有额外的风险。
根据IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述:
ASP.NET 在应用程序域的生命周期内调用它们(Application_Start 和 Application_End)一次,而不是针对每个 HttpApplication 实例。
因此,Application_Start 似乎是热身代码的好地方,例如:
它只需要将 IIS App 配置为AlwaysRunning。在其中WarmUpBackend
,我们可以预加载 Web 服务所需的一切。
html - 使用 IIS ApplicationInitialization remapManagedRequestsTo 功能时返回用于提供静态 html 的自定义响应代码?
我目前正在使用 IIS 的ApplicationInitialization功能来预热我的 ASP.NET 应用程序。我已将属性remapManagedRequestsTo设置为"warmup.html"。
它运行良好,但我想在将 Warmup.html 的内容返回到浏览器时返回自定义状态代码。这样当我在部署后运行一些冒烟测试时,我就会知道热身何时完成。
我尝试使用URL Rewrite将状态代码从 200 更改为 555 以提供warmup.html并且它确实更改了状态代码但不提供warmup.html中的内容
有没有一种方法可以同时提供warmup.html的内容并返回自定义状态代码555?
azure - 无法在 webconfig 中使用 applicationInitialization 预热页面
我有一个简单的 Umbraco 7.7.2 应用程序,我将它托管在 Azure(应用程序服务)上。当我重新启动服务器时,第一次请求一个页面需要 20-40 秒,这在负载很高并且您正在向外扩展以减少响应时间时特别烦人。
我已经在我的 webconfig 中尝试过这个设置,但它似乎不起作用。
我可能以错误的方式尝试它,但我所做的是重新启动服务器并且我已经离开它 2-3 分钟而没有请求任何页面。
我检查了我的 Umbraco 日志,但应用程序甚至没有启动。然后我请求了主页,花了 40 秒才出现。
然后我尝试了 mydomain.com/page1 ,它也花了 20 秒,因为它是第一个访问它的请求。
*PS:第一次请求后,网站非常快,每个页面加载不到 100 毫秒
更新
正如凯文所建议的那样,我已经实施了重写以停止下一个重定向。结果,我的 Umbraco 将启动,但请求仍然无法到达页面。
在我的母版页上,我添加了一行来在日志中写入一行,如果它在查询字符串中有预热并且它可以从浏览器点击页面:
但是,之后我的日志中没有任何内容
2018-02-08 15:16:51,245 [P7036/D2/T1] 信息 Umbraco.Core.CoreBootManager - Umbraco 应用程序启动完成(耗时 12727 毫秒) 2018-02-08 15:16:54,911 [P7036/D2/T1] 信息MyNamespace.Web.CustomStartup - 基本配置完成!
这是我根据凯文的回答添加的配置:
另外,我在 Microsoft 上发现了另一个类似的配置:
azure - 2018 年的 Azure 预热 UserAgent 字符串是什么?
此消息来源说Initialization:
然后这个网站说SiteWarmup:
http://ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/
(被大卫埃博本人引用:https ://github.com/projectkudu/kudu/issues/2583 )
然后这个说IIS 应用程序初始化预热:
我使用的是SiteWarmup,但最近出现了重大的热身问题。最近这里有什么变化吗?
您在哪里可以找到“官方”文档 - 我可以仔细检查。我希望它在 Azure 的某个地方使用粗体字母,因为 https 是当今的标准,并且它不适用于 https (或一般重定向)的开箱即用。
c# - Web api 上的 Azure 预热不起作用
我有一个网站,其中包含一些使用 web api 2 和 .net 4.6 编写的 web 服务。我希望在重新启动站点或启动新实例(在 Azure 应用服务上)时初始化应用程序。
我在 webconfig 中有这段代码:
我有这个控制器:
我看不到任何日志。不是当我重新启动站点时,也不是当我向外扩展时。我尝试使用没有任何标题的邮递员调用我的 api(只需访问http://xxx//api-v2/warmup/get,它运行良好,并且还写入了我的日志。
我已经读过这个帖子:Cannot warm up pages using applicationInitialization in webconfig
-Azure 和 webconfig 上没有 IP 限制
-webconfig 中没有 url 重写(例如 https 或 www。)
- 不涉及外部系统(如 CMS),所以我不需要发送主机名,但我也尝试发送它但它没有用