Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 刻度灯_Php_Mysql_Lamp - Fatal编程技术网

Php 刻度灯

Php 刻度灯,php,mysql,lamp,Php,Mysql,Lamp,我有一个客户的LAMP网站主要提供视频服务。他目前在一台包含所有组件的服务器上。他有一些缩放问题。有哪些技术可以用来帮助你 我使用在DB和Web服务器之间使用GB以太网将其分离到另一台服务器。可能会添加更多具有负载平衡功能的web服务器,以及具有复制功能的其他MySQL服务器 如果可能的话,我想要一些关于如何扩展的中型、大型、超大型示例 这段视频实际上是以jpg图像的形式出现的。与本网站类似: 并补充一些细节。我估计每小时最多有1000名访客,我想如果能做到这一点就太幸运了。每天可能接近100

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

我使用在DB和Web服务器之间使用GB以太网将其分离到另一台服务器。可能会添加更多具有负载平衡功能的web服务器,以及具有复制功能的其他MySQL服务器

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

这段视频实际上是以jpg图像的形式出现的。与本网站类似:


并补充一些细节。我估计每小时最多有1000名访客,我想如果能做到这一点就太幸运了。每天可能接近1000人。

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

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

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


但我不会想象任何一个头脑清醒的人会在MySQL上存储视频——如果他这样做,那么重构可能是正确的。

首先,我同意,在尝试扩展之前,你必须知道瓶颈是什么。以下是一些让您开始学习的一般建议:

  • 从数据库中获取视频。我不认为这在任何情况下都有意义

  • 再添加一个服务器以仅为视频内容提供服务器,并将HTML/应用程序保留为原始服务器。这不仅减少了负载,而且通过克服任何问题,在客户端实现了性能改进

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

  • 如果你够幸运,能达到“超大型”,你可能会想到一个新的选择。我相信在那之前你会遇到很多其他的障碍


  • 祝你好运

    Profile来查看他的站点的各个部分实际施加了多少负载


    我假设大部分负载实际上是为视频服务的——使用代理将此工作重定向到第二台(第三台、第四台……)服务器。

    巴雷特的答案与我的答案差不多——识别瓶颈,查看memcached,将数据库从web服务移动到单独的服务器,等等

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


    另外,请看Livejournal和Facebook关于如何扩展其系统的演示,它们可能会提供一些见解,具体取决于您的应用程序的结构。

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

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

    首先对最常见的查询执行一次扫描,然后检查是否正在对大型表或正在增长的表执行不必要的顺序扫描。根据需要编制索引

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

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

    你所有的桌子都是MyISAM吗?频繁更新的表可能会通过将它们移动到行级锁定(与MyISAM的表级锁定相反)而显示性能改进


    这些只是简单的、一般性的建议——没有更多关于到底什么是慢的细节,很难提供更深入的内容。

    您应该首先分析应用程序,并找出瓶颈所在——如果是PHP,使用类似xdebug的东西将是一个良好的开端。这可能是因为您花了很长时间序列化数据,或者与数据库通信,所以使用Memcached进行缓存可能会有所帮助

    其次,如果您使用的是MySQL,请打开MySQL慢速查询日志(在my.cnf中记录慢速查询);这可以让您了解什么是昂贵的数据库查询,并且一旦您知道可以通过EXPLAIN对其进行目标调优,正如前面提到的那样。在这种情况下,您可能只需要向数据库中添加一些索引,此时它将再次变得快速。还有其他与my.cnf相关的参数,例如不使用索引的日志查询

    第三,看看像Yahoo的PageSpeed firefox插件这样的工具——它会提出一些建议(例如,卸载静态内容、压缩返回的内容、确保有过期的标题等)。也许服务器本身不是瓶颈,而且由于依赖于第三方(外部JS、广告、flash…),页面呈现需要很长时间

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


    我相信还有很多可以说的

    好的评论,在mysql中存储视频不一定是一个问题,如果它做得好。我以前确实做过,并取得了巨大的成功。存储视频不一定是个问题,但在我看来很容易。我认为将视频存储在其他东西中(除了MySQL)可能是一个更好的主意。MySQL不支持blob流媒体(除了一个不寻常的补丁),通常需要在内存中保存整个文件。如果实现得不好,你的权利可能是致命的。取决于存储设备