3

我有一个客户,其 LAMP 网站主要提供视频服务。他目前在一台包含所有组件的服务器上。他有一些缩放问题。有哪些可以用来提供帮助的技术。

我使用将数据库分离到另一台服务器,在它和网络服务器之间有一个 GB 以太网。也许添加更多带有负载平衡的 Web 服务器和带有复制的额外 MySQL 服务器?

如果可能的话,想要一些关于如何扩展的中型、大型、超大型示例。

该视频实际上是以jpg图像的形式出现的。类似于这个网站:

http://www.webcams.travel/webcam/1170170095

并添加一些细节。我认为每小时的最大访问量是 1000 人,我认为拥有这个会很幸运。可能每天接近1000个。

4

6 回答 6

8

关于 CloudFront 和 MemCache 等的建议都很好,假设它们解决了您的性能问题的根源。

在数据库方面:配置文件,配置文件,配置文件。将数据库移动到单独的服务器(可能)是一个很好的步骤,但是如果您没有分析在此数据库实例上运行的查询,您不知道需要改进什么。

首先对最常见的查询执行EXPLAIN ,并检查您是否对大型或不断增长的表进行了不必要的顺序扫描。必要时索引。

是否有任何查询传回未使用的列?

您是否像其他评论者担心的那样,从数据库中提供您的图形/视频内容?文件应该保存在文件系统中,并从那里提供。

你所有的桌子都是 MyISAM 吗?经常更新的表可以通过将它们移动到InnoDB来显示性能改进,在那里它们可以受益于行级锁定(与 MyISAM 的表级锁定相反)。

这些只是简单的一般性建议——如果没有更多关于什么是慢的细节,很难提供更深层次的东西。

于 2008-11-23T19:18:57.860 回答
5

首先,我同意在尝试扩展之前您必须知道瓶颈是什么。这里有一些常规的建议可以帮助您入门:

  1. 从数据库中获取视频。我看不出这在任何情况下都有什么意义。

  2. 再添加一台服务器以仅提供视频内容,并将 HTML/应用程序保留为原始服务器。这不仅减少了负载,而且通过克服任何HTTP 连接限制在客户端提高了性能。

  3. 缓存 - 这可能意味着Memcahce或只是预先构建 HTML 输出,而不是为每个请求动态处理它。

  4. 如果您有幸达到“超大型”,您可能会考虑使用CDN。我敢肯定,在那之前你会遇到许多其他障碍。

祝你好运。

于 2008-11-23T16:11:55.927 回答
4

您需要确切地找出问题所在 - 没有通用的解决方案。

你需要用真实的硬件和可以模拟大量客户端的东西来构建一个性能测试环境。这可能相当昂贵。

如果问题是数据库(可能是),那么解决方案通常是将其拆分为多个数据库,每个数据库都保存部分数据。

但我不会想象任何理智的人会在 MySQL 上存储视频 - 如果他这样做,那么可能需要进行重构。

于 2008-11-23T12:53:55.157 回答
0

配置文件以查看他的站点的各个部分实际造成了多少负载。

我认为大部分负载实际上是为视频提供服务 - 使用代理将这项工作重定向到第二个(第三个,第四个......)服务器。

于 2008-11-23T16:32:58.647 回答
0

Barrett 的回答几乎就是我会做的——找出瓶颈,查看 memcached,将数据库从 Web 服务移到单独的服务器上,等等。

我要补充一点,亚马逊有一项名为CloudFront的新服务,它将提供来自地理位置接近的服务器的内容。我还没有尝试过,但这可能是一种以相对较低的成本分散负载的方法。

此外,查看 Livejournal 和 Facebook 关于他们如何扩展系统的演示文稿,它们可能会根据您的应用程序结构提供一些见解。

于 2008-11-23T16:41:44.743 回答
0

您应该从应用程序开始分析并找出瓶颈所在 - 如果它是 PHP,使用 xdebug 之类的东西将是一个好的开始。可能是您花费了很长时间序列化数据或与数据库通信 - 因此使用 Memcached 进行缓存可能会有所帮助。

其次,如果你使用的是 MySQL,请开启 MySQL 慢查询日志(my.cnf 中的 log_slow_queries);这可以用来让您了解昂贵的数据库查询是什么,并且一旦您知道可以通过 EXPLAIN <> 来调整它们,正如已经提到的那样。可能您只需要向数据库添加一些索引,此时它会再次变得很快。还有其他相关的 my.cnf 参数,例如不使用索引的日志查询。

第三,查看 Yahoo 的 page speed firefox 插件之类的工具 - 它会提出一些建议(例如卸载静态内容、压缩您返回的内容、确保您有过期的标头等)。也许服务器本身不是瓶颈,并且由于对第三方(外部 JS、广告、flash ...)的依赖,页面需要很长时间才能呈现。

与 Web 服务器相比,您需要了解数据库服务器的繁忙程度,以了解需要在何处添加额外硬件(即您是否需要多个带有前端负载平衡器的 Web 服务器,或者您是否需要具有复制或两者兼有的多个数据库服务器?)。

我敢肯定还有很多可以说的......

于 2011-04-29T13:21:51.300 回答