Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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_Scalability - Fatal编程技术网

Php 编写可伸缩网站的技巧

Php 编写可伸缩网站的技巧,php,mysql,scalability,Php,Mysql,Scalability,我是网站可伸缩性领域的新手。你能向我推荐一些使网站可扩展到大量用户的技术吗 在重负载下测试你的网站 监控所有统计数据 找到瓶颈 修复瓶颈 返回到1 祝您好运您可能希望查看此资源-。使用可靠的OOP技术开发您的站点。你需要你的网站是模块化的,因为不是所有的性能瓶颈在一开始就很明显。随着流量的增加,准备好重构站点的某些部分。我写的第一句话将帮助你更轻松、更安全地完成任务。另外,使用测试驱动的开发,因为重构意味着新引入的bug,好的TDD可以在它们投入生产之前捕获它们。 尽可能将客户端代码与服务器端代

我是网站可伸缩性领域的新手。你能向我推荐一些使网站可扩展到大量用户的技术吗

  • 在重负载下测试你的网站
  • 监控所有统计数据
  • 找到瓶颈
  • 修复瓶颈
  • 返回到1

  • 祝您好运

    您可能希望查看此资源-。

    使用可靠的OOP技术开发您的站点。你需要你的网站是模块化的,因为不是所有的性能瓶颈在一开始就很明显。随着流量的增加,准备好重构站点的某些部分。我写的第一句话将帮助你更轻松、更安全地完成任务。另外,使用测试驱动的开发,因为重构意味着新引入的bug,好的TDD可以在它们投入生产之前捕获它们。
    尽可能将客户端代码与服务器端代码分开,因为它们可能来自不同的服务器,如果您的站点流量证明了这一点。
    阅读文章(例如阅读YSlow提示)

    GL

    由Rasmus Lerdorf(PHP的创建者)签出


    特别是第8页及更高版本。

    如果您希望您的站点扩展到单个服务器的能力之外,您需要仔细规划。设计时应考虑以下因素:-

    • 使您的数据库可以位于单独的服务器上。这通常不太难
    • 确保您的所有静态内容都可以移动到CDN,因为这通常会从服务器上释放大量负载
    • 准备好在硬件上花很多钱。更多的RAM和更快的磁盘帮助很大
    • 当您需要将数据库或php从一台服务器拆分为多台服务器时,这会变得更加困难,因此要尽可能长时间地优化所有内容,包括代码、数据库模式、服务器配置以及您能想到的任何其他内容,以尽可能地推迟这最后一步
    除此之外,你所能做的就是对你的网站进行压力测试,找出瓶颈所在,并尝试设计它们。

    非常相似:

    可伸缩性不是一个小问题,当然比一个问题合理涵盖的内容更多

    例如,对于某些类型的应用程序,连接(在SQL中)不可伸缩,这会带来各种缓存和分片策略


    Beanstalk是高性能PHP站点中的另一个可伸缩性和性能工具。memcache(不同类型)也是如此。

    按重要性顺序排列:

  • 如果运行PHP,请使用操作码缓存,如。(这一点非常重要,可以内置到下一代PHP中。)

  • 使用或来识别瓶颈。(这将揭示影响客户端和服务器性能的网站结构问题。)

  • 确保web服务器为静态内容(图像、Javascript、CSS)发送正确的Expires头,以便浏览器能够正确缓存它。(YSlow也会提醒您这一点。)

  • 使用HTTP加速器,例如。(这说明了一切——而且他们已经有了HTTP加速器。)


  • 许多人提到了识别瓶颈的工具,这当然是必要的。你不能在不知道什么地方慢的情况下,花大量的时间来加速。但是您需要知道的另一件事是您的目标可伸缩性在哪里。如果你的网站将被人力资源部的三个人使用,那么花几个月的时间将你的网站扩展到与Twitter相同的用户数量,是否物有所值?在产品的需求中,您是否有已知的事务速率、响应延迟或用户数?如果是这样,用你的优化策略瞄准这些数字。如果没有,在追查性能漏洞之前先找出这些问题。

    可伸缩性的最大问题通常是共享资源,如DBMS。问题的出现是因为DBMS通常无法放松一致性保证

    如果您想在使用MySQL之类的东西时提高可伸缩性,就必须更改模式设计以放松一致性

    例如,您可以分离数据库模式,使其具有用于写入的规范化数据模型,以及用于90%读取操作的复制只读非规范化部分。只读数据可以分布在多个服务器上


    提高数据库可扩展性的另一种方法是对数据进行分区,例如,将数据分离到每个部门的数据库中,并在ORM或DBMS中进行聚合。

    除了其他建议外,还可以研究将站点分为多个层,如中所示。如果做得好,那么每层可以使用一台服务器。

    同意,我只想补充一点,缓存可能是创建大型站点时应该做的第一件事。是的。确保MySQL的缓存特性设置良好,并为代码使用健壮的缓存。在其他答案中提到了一些非常好的方法。在ORM层聚合数据会带来应用程序级的复杂性,这对于Ruby和PHP等语言来说可能会很慢。另外,它更难管理。