估计应用程序的商品硬件

时间:2010-01-14 20:15:12

标签: performance hardware capacity-planning

假设,我想开发堆栈溢出网站。假设每天有100万个请求,我如何估计支持本网站所需的商品硬件数量。是否有任何案例研究可以解释在这种情况下可能的性能改进?

我知道I / O瓶颈是大多数系统的主要瓶颈。有哪些可能的选择来提高I / O性能?我知道的很少是

  1. 缓存
  2. 复制

3 个答案:

答案 0 :(得分:2)

您可以通过多种方式提高I / O性能,具体取决于您用于存储设置的内容:

  1. 如果您的应用在其I / O中显示良好的空间位置或使用大文件,则增加文件系统块大小。
  2. 使用RAID 10(条带化+镜像)获得性能+冗余(磁盘故障保护)。
  3. 使用快速磁盘(Performance Wise:SSD> FC> SATA)。
  4. 在一天中的不同时间隔离工作负载。例如在夜间备份,白天正常的应用程序I / O.
  5. 关闭文件系统中的atime updates
  6. 缓存NFS文件处理a.k.a. Haystack(Facebook),如果在NFS服务器上存储数据。
  7. 将小文件合并为更大的块,a.k.a BigTableHBase
  8. 避免使用非常大的目录,即同一目录中的大量文件(而不是在层次结构中的不同目录之间划分文件)。
  9. 使用clustered storage system(是的,不完全是商品硬件)。
  10. 尽可能优化/设计应用程序以进行顺序磁盘访问。
  11. 使用memcached。 :)
  12. 您可能需要查看StackOverflow Architecture的“经验教训”部分。

答案 1 :(得分:1)

查看这个方便的工具:

http://www.sizinglounge.com/

和戴尔的另一个指南:

http://www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555

如果您想要自己的类似堆栈流的社区,则可以使用StackExchange进行注册。

你可以在这里阅读一些案例研究:

高可扩展性 - Rackspace现在如何使用MapReduce和Hadoop查询数TB的数据 http://highscalability.com/how-rackspace-now-uses-mapreduce-and-hadoop-query-terabytes-data

http://www.gear6.com/gear6-downloads?fid=56&dlt=case-study&ls=Veoh-Case-Study

答案 2 :(得分:1)

每天100万个请求是12 /秒。堆栈溢出足够小,你可以(有趣的规范化和压缩技巧)完全适合64 GByte Dell PowerEdge 2970的RAM。我不确定缓存和复制应该在哪里发挥作用。

如果您对正常化有足够的思考,可以使用256GB的PowerEdge R900。

如果您不喜欢单点故障,可以连接其中的一些,只需通过套接字推送更新(最好是在单独的网卡上)。即使是12K /秒的峰值负载也不应该成为主存储器系统的问题。

避免I / O瓶颈的最佳方法是不做I / O(尽可能多)。这意味着类似于prevayler的体系结构具有批量写入(没有问题会丢失几秒钟的数据),基本上是一个日志文件,而复制也会将它们写入套接字。