你是如何做网站容量规划的?

vto*_*ola 29 project-management capacity-planning

我刚刚阅读了" 容量计划的艺术"(BTW,我喜欢它),其中作者解释了衡量服务,找出最高限度,预测需求,确保轻松部署等方面的重要性等.但通过这本书,他解释了他在Flickr的经历,他不得不面对同样的产品.

很多我们,我们在我们面向其他公司的中小型项目规模的公司工作.我们必须了解他们的业务,他们的需求,计划架构,模型等等.

然后,客户说"我需要支持1000个用户".那么,每秒有多少请求是用户?他们的会议有多长?他们传输了多少数据?他们执行哪些操作?他们有多久了?

有时可以知道这些数字(监控他们现有的应用程序或因为他们已经完成了测量),有时候这是不可能的(因为他们没有当前的网站,或者只是可能知道).

你如何猜测服务器,带宽,存储等的数量......你使用哪些参考数据?

问候.

Ari*_*tos 21

制定此计划需要了解的一些要点

  1. 每天有多少用户.
  2. 您要控制多少数据.
  3. 您将向每个用户显示多少数据.
  4. 可能需要的平均用户带宽.
  5. 使用您网站的平均用户时间.

平均数字可以让您知道每月需要什么.对于cource,您还需要考虑峰值数字 - 但是当他们撕毁Web服务器计算机和站点时,他们会按月提供带宽并在硬盘上提供几千兆字节,因此峰值在开始时不是问题.在那里你必须认为,如果你运行需要太多ram的sql查询,或者如果你与许多其他站点共享计算机.

测量

对于现场,没有经验,你没有实际的措施.没有措施,你实际上不能确定,但​​你可以遵循一些指南

  • 无论你做什么,try to make the grow of your data/features/runs linear and not logarithmic.
  • The speed of your site is not (only) depend from the capacity and the speed of your computer.仅在计算机处于极限时才依赖.如果计算机达到其限制,则添加其他资源.但是,在设计软件时,速度必须要小心,而且速度快的软件也需要花费.
  • 您每天在数据库中有数百万的数据吗?你需要更多的RAM和硬盘
  • 你有视频和许多大文件要发送吗?你需要更多的带宽.
  • 你有使用该网站工作的人吗?你需要更多的速度和稳定性
  • 你又制作了一个电子商务网站吗?你需要稳定的安全性

我们的目标是拥有所有这些,并且优先考虑您首先关注的实际变化.

规划速度.

Performance and Capacity: Two diffident animals*.性能基于更多的人工工作,并且容量基于更多的计算机资源.为了提高速度,首先需要知道如何使计算机平稳快速地运行,然后知道如何使程序快速运行,特别是网络上的程序,然后你实际上需要花更多的时间来实际运行程序运行后,为了提高它在关键领域的表现.

规划扩展.

做好软件设计并注意扩展的可能性,以防您可能需要更多,以便为您的客户提供从少开始的机会,并且只有在需要时才支付更多费用.因此,当您设计软件时,请考虑将其用于Web池,注意同步,处理公共资源,提供从不同服务器获取数据的能力等.

规划有限

好吧,假设客户说只有1000个用户并且没有有趣的网络用于扩展,为了提高速度,只需要一个具有成本效益的网站来完成他的工作.在这种情况下,您还可以使用此限制进行设计.这有什么限制.您不会对同步进行数十次检查,并使其像单个线程,单池程序一样工作.您不使用任何互斥,任何双重检查,任何认为当您有2个池或2台计算机运行相同的应用程序时发生.您只需注意在需要升级的情况下更改它们的代码点.

您也没有使用任何使用多计算机资源的代码.当你运行它时,你要注意只在一个池下运行才能正常工作.

这个单池设计更容易开发,更容易调试,易于控制,易于更新错误代码,成本更低,但速度快(一个用户在一个线程池上等待另一个)并且无法扩展资源,实际上也必须与速度.

查找统计数据

如果您不知道自己拥有多少用户,可以使用alexa查看与您的用户类似的网站以及他们每月的平均用户数和平均网页浏览量.然后你可能知道可能的带宽.

在需要之前不要购买

从您对硬件的预测开始,但不要从第一天开始租用2台计算机.从第一个开始,制定措施,查看数据如何增长,并且只在需要时扩展它.

汽车还是一级方程式?

当程序运行时,如果你遵循它,你会发现许多人认为需要纠正.我可以说你的生命只有两个.

在我们将程序放在网上后,我们的客户开始添加数据.几个月之后,我们注意到数据库增长太多了 - 我们没想到数据会输入.我们花了差不多一个星期来找到原因并修复它,这是一个设计错误,使一些统计数据变得对数增长,我们纠正它并继续前进.

经过两年的运行,我们注意到我们对SQL服务器进行了太多不必要的调用.我们追查它并再次发现设计错误,我们纠正它并继续前进.

实际上,我们每个月都发现并修复了很多关于性能的小点.对我来说就像公式一样.你决定你拥有什么样的汽车,一个需要所有时间校正以获得最大值的公式,或者只需要每年服务的简单汽车?

客户观点

Then, the customer says "I need to support 1000 users"那么客户不知道编程,并试图从他的角度找到一个衡量标准来比较提案.实际上这里有更多的因素,1000个用户不是一个正确的参数.每分钟每月或每月1000个用户?需要通过实时聊天来支持,还是需要查看大量数据,还是需要快速工作?所以也许你可以通过向他解释一个好的程序对一百万用户的一个用户来说是好的,并且实际上它的开始是开发成本而不是用户.

现在,如果这是一个实际规划网站的问题,那么简单的终点答案是开始做,其余的将被揭示.如果这是一个问题,因为你为自己的客户搜索答案,那么你必须问问自己:为什么一级方程式赛车只能坐一个而你的车可以装五个?或者电影花了多少钱?或者我们都知道如何写,但为什么不是我们所有人都写和出版一本书?我的观点是,成本实际上来自你花费在制作项目上的时间,而他自己的用户无法确定.

猜猜,知识还是预测?

How do you make a guess about the number of servers, bandwidth, storage, etc... 我们实际上没有猜测,我们有很多网站,我们每天都会自动收集许多统计数据,多年经验,我们从网站内容中了解到,每天有多少用户可以吃多少带宽.我们还有许多在我们的服务器上运行的数据库,我们可以看到它们使用了多少数据.99%的网站都是低数字.所以这是知识和经验,有真实的实时统计数据.通过监控流量及其使用情况来预测,我们会尝试让它们更好,以获得更多流量,更多用户,以及我们存档的内容,我们会尝试预测未来是否需要更多资源.此外,99%的网站都是单池运行非常简单的演示文稿.

'*从书中

  • 很好的完整答案. (3认同)
  • 嗯.对于容量规划,我想说我想知道峰值数,而不是平均值. (2认同)
  • @vtortola,因为我告诉你,你的意见得到尊重,我实际上试着用爱来帮助,并且仍然继续帮助,期待任何事情.我的上师让我置身于爱的道路上:)一切都是爱和美好,生活是美好的,当我提供任何帮助时,我感觉很酷.:))) (2认同)

Shi*_*iji 8

这通常非常困难,因为当客户要求回答这个问题时,系统甚至都没有设计.这在法律上是不可能的.

作为一个非常粗略的经验法则,我们每台服务器每秒使用100个请求.实际数量将根据应用程序和用户使用系统的方式而有所不同,但我们发现它是一个很好的初步估计.

文档系统的磁盘使用量仅为文档数乘以平均大小.带宽是请求数乘以平均请求数.

您只需记录所有假设,并说硬件要求基于这些假设.