我正在构建一个Web应用程序,它将为不断增长的用户群提供内容。我想知道从哪里开始可扩展性,以及如何衡量我的应用程序的性能,所以我知道什么时候需要它。
例如,据我所知,随着站点流量的增加,缩小脚本和使用静态内容缓存等功能将有助于管理加载时间,但我不确定何时适合实现这些功能。
此外,在服务器开始崩溃和窒息之前,我如何衡量网站的性能,了解何时开始添加更多服务器,以及构建应用程序的健壮性等等?
提前致谢...
答案 0 :(得分:3)
您应该立即来缩小脚本和缓存内容。它会影响页面加载速度,从而影响用户体验,无论您的网站加载方式。研究表明,更快的网站有更好的转换率 - 谷歌。页面速度据称也有利于搜索引擎排名。
您可以使用Google Page Speed和Yahoo YSlow等工具来衡量网页加载效果。这两种工具都提出了改进方法,因此请将它们作为您的指南。
答案 1 :(得分:2)
我在编码方面比服务器管理员更多...只是一个想法...我会有一个index1.php与index.php没有区别,除非它在开头有一个microtime()而另一个在最后一行(或你怀疑的一些代码周围)计算执行时间。在最后一行(microtime)之后,我将有一个函数将这个执行时间与数据库中的日期一起存储。
我会每天运行页面形式index1.php 2或3次,并存储当天的最大时间。在本周末,您可以生成图表或直接查看值,它们如何根据时间变化,以便您可以决定要做什么。
mysql优化(通常有很多要优化的东西,数据类型,索引,sql查询等),良好的设计,繁重的循环,异步加载(XmlHttp-可以帮助很多)都需要考虑的事情。
答案 2 :(得分:1)
首先定义您要为用户提供的服务级别。例如,从用户的角度来看,任何页面的加载时间都不应超过1秒。该网站的正常运行时间应为99.9%等。
根据服务级别,定义可接受的性能(页面加载时间等)。
评估现有表现。即在当前使用水平下根据不同标准衡量您当前的表现。
标识要优化的网页。如果大多数站点需要优化,您需要查看整体解决方案(例如:缩小js / css,缓存等)。如果特定页面需要优化,请查看单个查询等。
定期衡量效果,看看您的服务水平是否仍然满足,或者您需要进一步扩展。
这些是您可以采取的一般步骤。至于具体步骤,请考虑:
对所有内容进行分区/拆分(数据库,多个网络服务器等)。
异步设计(即你所做的任何过程都可以占用大量资源,你应该转换成一个异步过程。假设你允许用户上传文档。然后应用程序获取文档。并进行一些处理doc。不是在单个php页面上进行所有处理,而是将请求添加到队列中,然后让用户立即知道他的请求已排队。有一个单独的后台进程通过查看队列来进行处理。一旦完成,您可以让用户知道他的请求是流程。
有关更多指南,您可能需要查看一本名为“可伸缩性艺术”的书http://amzn.to/oSQGHb