【问题标题】:How to decide on what hardware to deploy web application如何决定部署 Web 应用程序的硬件
【发布时间】:2011-02-12 09:26:59
【问题描述】:

假设您有一个 Web 应用程序,没有特定的堆栈(Java/.NET/LAMP/Django/Rails,都很好)。

您将如何决定部署哪些硬件?在确定您需要多少台机器时,有哪些经验法则?

您将如何制定诸如并发用户、同时连接数、每日点击数和数据库读/写比率等参数来决定您需要多少硬件以及需要哪些硬件?

有关此问题的任何资源都会非常有帮助...

特别是 - 任何来自现实世界经验和案例研究的硬数字都会很棒。

【问题讨论】:

    标签: performance web-applications


    【解决方案1】:

    容量规划是一个相当详细和广泛的领域。您需要接受具有“理论基线 > 负载测试 > 调整和优化”方法的迭代模型。

    理论

    第一步是确定业务需求:预计峰值使用量有多少用户?请记住——这些数字通常有一定的误差。

    例如,假设所有高峰流量(在最坏的情况下)将超过一天中的 4 小时。因此,如果网站预计每天有 10 万次点击,我们不会将其划分为 24 小时,而是超过 4 小时。所以我的网站现在需要支持每小时 25K 次点击的峰值流量。

    这分解为每分钟 417 次点击,或每秒 7 次点击。这仅在前端。

    添加内部事务的数量,例如数据库操作、每个用户的任何文件 i/o、可能在系统内运行的任何批处理作业、报告等。 统计所有这些,以获得您的系统需要支持的每秒、每分钟等事务数。

    当您有诸如“平均响应时间必须为 3 秒等”之类的要求时,这会变得更加复杂,这意味着您必须考虑网络延迟/防火墙/代理等

    最后 - 在选择硬件时,请查看 Sun、HP、IBM、Windows 等每个制造商发布的数据表。这些数据表详细说明了测试条件下每秒的最大交易量。我们通常在真实条件下接受 50% 的峰值 :)

    但最终硬件的选择通常是一个商业决定。

    您还需要在每一层至少保留 2 台服务器:web / app / even db 用于故障转移集群。

    负载测试

    建议在整个项目生命周期和发布后有一个单独的参考测试环境,这样您就可以回来对应用运行专门的性能测试。将此扩展为较小的生产版本,因此如果 Prod 有 4 台服务器而 Ref 有 1 台,那么您测试 25% 的峰值事务等。

    调整和优化

    人们常常将一些昂贵的硬件放在一起,并期望它们都能完美运行。您需要针对各种参数(例如 TCP 超时等)调整硬件和操作系统 - 这些是由软件供应商发布的,并且必须在软件完成后完成。在 Ref 环境中设置这些调整参数,进行测试,然后决定需要将哪些参数转移到生产环境中。

    【讨论】:

      【解决方案2】:

      使用示例负载测试您的应用并衡量性能和负载指标。数据库查询、磁盘命中、延迟等等。

      然后估算部署时的预期负载(去咨询领域专家)(您必须考虑平均负载和峰值)。

      将两者相乘并添加一些只是为了确定。这真的大致了解了您的需求。

      然后实现它,记住你通常不会线性扩展,你可能不会得到预期的负载;)

      【讨论】:

        【解决方案3】:

        确定您的预期负载。 设置一台机器并使用负载测试工具对其进行一些测试。 如果你只完成了 10% 的峰值负载并有一定的误差余量,那么你有多接近,那么你知道你将需要一些负载平衡。设计并实施解决方案并再次测试。确保您的解决方案足够灵活,可以扩展。

        尝试和错误几乎是要走的路。这实际上取决于各个应用程序和使用模式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 2012-01-20
          • 2020-02-06
          • 1970-01-01
          • 2019-07-02
          相关资源
          最近更新 更多