【问题标题】:Resolving Overloaded Webserver Issues解决重载的 Web 服务器问题
【发布时间】:2011-05-06 23:11:36
【问题描述】:

我是网络开发领域的新手,目前正在面试公司,人们最喜欢问的问题是:

如果可以,您如何扩展您的网络服务器 开始达到一百万个查询?

如果你只有一个,你会怎么做 在那运行的数据库实例 时间?你是怎么做到的?

这些问题真的很有趣,我想了解一下。
请针对此类情况提出您的建议/实践(您遵循的)

谢谢

【问题讨论】:

    标签: database scalability


    【解决方案1】:

    如何缩放:

    • 确定您的瓶颈。
    • 确定问题的正确解决方案。
    • 检查您是否可以实施正确的解决方案。
    • 确定替代解决方案并检查

    典型的缩放选项:

    • 垂直扩展(更大、更快的服务器硬件)
    • 负载平衡
    • 将层/组件拆分到更多/其他硬件上
    • 通过缓存/cdn 卸载工作

    数据库扩展选项:

    • 垂直扩展(更大、更快的服务器硬件)
    • 复制(主动或被动)
    • 集群(如果 DBMS 支持的话)
    • 分片

    【讨论】:

      【解决方案2】:

      在最基本的层面上,扩展 Web 服务器包括编写您的应用程序,使其可以在 1 台以上的机器上运行,然后将更多的机器用于解决问题。无论您对它们进行多少调整,最终的扩展都将涉及 Web 服务器群。

      数据库问题更难处理。你的读/写百分比是多少?这是一个什么样的应用程序? OLTP? OLAP?社交媒体?什么是数据库?我们如何添加更多服务器来处理负载?我们是否将数据分区到多个数据库?还是将所有更改复制到从负载的负载?

      您的问题会引发更多问题,即在面试中,如果某人只是对您发布的一般问题“有答案”,那么他们只知道一种做事方式,而这种方式可能会也可能不会最好的。

      【讨论】:

        【解决方案3】:

        对于第一个问题,我有几种方法:

        1. 是否有硬件升级可以在短时间内处理数百万个查询?如果是这样,这可能是调查的初始点。

        2. 是否可以进行软件更改以优化服务器的性能?我知道 IIS 有大量不同的设置可用于在一定程度上提高性能。

        3. 考虑进入网络场情况,而不是使用单个服务器。实际上,我确实遇到过这样的情况,我曾经工作过,我们确实每分钟有数百万次点击,它严重破坏了我们的网络服务器并关闭了许多网站。我们的解决方案是更改负载平衡器,以便一些服务器为站点提供服务,这些站点会破坏服务器,以便其他服务器可以保持其他站点正常运行,因为这是在秋季,而在零售业,这是您的重要季度。虽然有些人会从这里开始,但我可能会最后到这里,因为与其他两个选项相比,这可能会打开一些蠕虫。

        至于数据库实例,我认为这将是一组类似的选项,尽管我可能会先执行多服务器选项,因为冗余可能是一个重要的附带好处,我不确定它是否容易网络服务器。我可能还差得很远,但我最初就是这样解决这个问题的。

        【讨论】:

          【解决方案4】:

          使用缓存代理

          如果您为所有访问者提供相同的页面(例如,新闻网站),您可以通过使用缓存代理(例如 Varnish)缓存生成的内容来将负载降低一个数量级>Apache Traffic Server.

          代理将位于您的服务器和访问者之间。如果您的首页获得 10,000 次点击,则只需生成一次,代理将向其他 9999 名访问者发送相同的响应,而无需再次询问您的应用服务器。

          【讨论】:

            【解决方案5】:

            可能在开发者开始开发系统之前, 他们会考虑服务器的规格 也许您可以减少对 SEO 的使用并阻止搜索引擎对其进行抓取 (这是占用大量资源的任务) 尽量把所有东西都索引好,避免轻易搜索

            【讨论】:

              【解决方案6】:
              1. 将其部署在云上,确保您的 Web 服务器和 Web 应用程序云准备就绪,并且可以跨不同节点进行扩展。我推荐 cherokee web 服务器(很容易在不同服务器之间进行负载平衡,并且基准测试证明比 Apache 更快)。例如,谷歌云(appspot)需要你的网络应用是 Python 或 Java

              2. 使用缓存代理,例如。 Nginx。

              3. 对于数据库,对一些假设重复的查询使用 memcache。

              4. 如果公司希望数据是私有的,那就建立一个私有云,在这里,Ubuntu 在这方面做得很好,完全免费和开源:http://www.ubuntu.com/cloud/private

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-07-13
                • 1970-01-01
                • 2022-01-18
                • 2015-03-31
                • 2014-07-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多