代码之家  ›  专栏  ›  技术社区  ›  Boolean

一个应用的商品硬件估计

  •  1
  • Boolean  · 技术社区  · 15 年前

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

    我知道I/O瓶颈是大多数系统的主要瓶颈。改善I/O性能的可能选项有哪些?我认识的人很少

    1. 缓存
    2. 复制
    3 回复  |  直到 15 年前
        1
  •  2
  •   Sudhanshu    15 年前

    根据用于存储设置的内容,可以通过多种方式提高I/O性能:

    1. 如果应用程序在其I/O中显示良好的空间位置或使用大型文件,请增加文件系统块大小。
    2. 使用 RAID 10 (条带化+镜像)用于性能+冗余(磁盘故障保护)。
    3. 使用快速磁盘(性能方面:ssd>fc>sata)。
    4. 隔离一天中不同时间的工作负荷。例如,夜间备份,白天正常的应用程序I/O。
    5. 关掉 atime updates 在文件系统中。
    6. 缓存NFS文件处理a.k.a. Haystack (Facebook),如果在NFS服务器上存储数据。
    7. 把小文件合并成较大的块,A.K.A. BigTable , HBase .
    8. 避免使用非常大的目录,即同一目录中的许多文件(而不是在层次结构中的不同目录之间划分文件)。
    9. 使用A clustered storage system (是的,不完全是商品硬件)。
    10. 尽可能优化/设计应用程序以进行顺序磁盘访问。
    11. 使用 memcached . :)

    您可能需要查看的“经验教训”部分 StackOverflow Architecture .

        2
  •  1
  •   jspcal    15 年前

    看看这个方便的工具:

    http://www.sizinglounge.com/

    以及戴尔的另一本指南:

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

    如果你想要自己的StackOverflow社区,你可以注册 StackExchange .

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

    高可扩展性—Rackspace现在如何使用MapReduce和Hadoop查询兆字节的数据 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

        3
  •  1
  •   Stephan Eggermont    15 年前

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

    如果您在考虑标准化方面有足够的问题,可以使用带有256GB的PowerEdge R900。

    如果您不喜欢单点故障,您可以连接其中一些故障点,然后通过插座(最好是单独的网卡)推送更新。即使是12K/秒的峰值负载也不应该是主内存系统的问题。

    避免I/O瓶颈的最佳方法是不进行I/O(尽可能多地)。这意味着一个类似prevyler的体系结构,具有成批的写操作(丢失几秒钟的数据没问题),基本上是一个日志文件,对于复制来说,还可以将它们写到一个套接字上。