Web应用程序启动时间真的那么重要吗?


11

与某人进行了一次对话,讨论在应用程序启动时添加一些初始化代码,他抱怨说这会导致启动时间增加。他不能说出一个真正的原因(不知道是什么感觉)。这不是一个使用率很高的应用程序,大约需要一分钟左右的时间才能开始,我们每年都会部署几次。

我记得很早以前就读过有关此类问题的建议,人们建议在启动时进行初始化,而不要在带有“如果您能负担得起罚款”字样的页面访问上进行初始化。

我使用的网络应用程序的使用时间从30秒到4-5分钟不等,但是一旦上网,它们就会摇摇欲坠。

那我想念什么呢?除非它是至关重要的应用程序,例如……我不知道……对于金融市场,医疗应用程序,太空探索等,启动时间真的那么重要吗?

PS:我严格来说是指Web应用程序,而桌面应用程序注定会迅速启动。


是否为应用程序启动定义了非功能性要求,或者这仅仅是开发中的讨论?
StuperUser 2011年

@StuperUser:不需要,到目前为止只是一个讨论。
JohnDoDo 2011年

实际上,这里有一个用户体验网站会更好。
独眼巨人

@Cyclops:实际上,我对篱笆的服务器端而不是用户端的原因更感兴趣。
JohnDoDo 2011年

Answers:


18

这可能是开发过程中的一个重要因素:如果您的平台不支持在运行的应用程序中更改代码,则启动时间将成为您的反馈周期的一部分,在那里,即使30秒也很痛苦,并威胁到生产力。

对于生产环境,这真的没有关系;要么可以接受一点停机时间,但5分钟仍然不多,否则就不行了,您必须实施某种实时切换。


是的,我对开发周期的了解不多,但这并不是像我们更改逗号,部署,更改变量名,部署等。我个人每天最多可以部署10次。一分钟启动或1.2并没有多大区别。
JohnDoDo 2011年

7
@JohnDoDo:有多少是真正自然的工作流程,有多少习惯性地避免了冗长的部署?快速的反馈周期可以极大地提高生产力。有时进行小的,增量的更改并立即看到结果确实是您所需要的。50年前,人们在纸上编写程序,然后将其提交给操作员,并在第二天得到打印结果-有时只是编译器错误。难道这不是一种效率低下的工作方式吗?好吧,对于许多程序员而言,每天需要进行10次部署。
Michael Borgwardt

1
如果可能,请评估执行“模拟”初始化或将结构与测试数据序列化到磁盘的选项,以加快开发过程中的启动时间。
Vinko Vrsalovic

我同意Vinko,有没有办法在调试模式下构建时关闭昂贵的init()函数?不过,不要担心初始化的东西在开发和生产上会给您带来不同的结果。
2011年

4

我相信当黑格尔著名的从数量到质量的转变的辩证法原理真正起作用时就是这种情况。

您知道,时间安排总是很重要的。我同意迈克尔·伯格沃德(Michael Borgwardt)关于在开发/测试中快速构建的重要性的说法,但我坚持认为(可能以其他方式)对于生产也很重要。

每个将一些不良代码部署到生产中的开发人员都知道,在5分钟和1分钟内提供的修补程序确实是非常不同的。


2

真正的问题是该应用程序是否无需初始化即可运行。我们有一些新员工都对“绩效”着迷,我的主要回答是,我不在乎您给出错误结果的速度。恕我直言,偷工减料,修改算法,因为“这样会更快”,而其他好主意只会引入错误。

如果需要初始化,请执行初始化。当最终用户得到错误的结果,最终弄清Web应用程序是错误的,打电话给您并抱怨并且您必须返回并调试/修复/测试/重新部署时,将浪费多少时间?现在,请问您的同事如何节省时间。(我敢打赌,您的服务器核心无论如何都处于99%空闲状态)


2

这个问题不问任何特定的平台。在某些平台上,启动时间确实非常重要。

例如,在Google App Engine上;如果您的页面没有被访问(或者访问频率比同一个节点上的其他应用程序少),则偶尔会被卸载。

因此,如果您处于网站访问频率的最低99%,则启动时间就是访问时间;您的应用几乎在每次访问时都会重新启动。如果你在最富有的1%,那么你的应用程序入门了多个节点上,虽然许多页面访问将从已启动的情况下返回,有的还不会,所以你有间歇性,长时间访问时间。

在其他许多托管环境中也是如此。第三方库中的泄漏,甚至是您自己的代码中只是发现而已的漏洞,都可能意味着运行Web服务的唯一可靠方法是让它重新加载每隔这么多的请求(通常在100到10,000之间),如此启动时间需要经常支付。当应用程序泄漏时,可以使用此模式,但启动速度很快;当应用启动时间超过几秒钟时,这是行不通的。


1

您正冒着应用程序被认为不合标准甚至更差的开发能力的风险。现在,此应用可能节省了很多人的时间和/或执行了一些需要完成的任务,以至于感激的用户可以摆脱长时间的启动。

以这种方式进行编程可能需要更长的时间来延迟加载应用程序,但是只有利益相关者才能确定是否值得。我有一份报告在55秒内完成。我们将其降至35。没有人注意到。虽然我花了两倍的时间将它从35岁提高到18岁,但每个人都注意到了,并感到感恩和感动。对于一年使用几次的应用程序,从5分钟延长到3分钟并不重要。用户将只有更少的时间花在Facebook上或喝咖啡。

感知是关键。如果对整个开发团队(尤其是该应用程序)不满意,则可能需要建立良好的信誉并加快进度。


但是,Web应用程序的启动时间不应影响普通用户。另一个开发人员很生气,因为他作为常规开发的一部分,每天多次亲自重启应用程序。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.